GCP - Enum de Contêineres & GKE

Reading time: 5 minutes

tip

Aprenda e pratique Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Aprenda e pratique Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE) Aprenda e pratique Hacking Azure: HackTricks Training Azure Red Team Expert (AzRTE)

Support HackTricks

Contêineres

Nos contêineres do GCP, você pode encontrar a maioria dos serviços baseados em contêineres que o GCP oferece, aqui você pode ver como enumerar os mais comuns:

bash
gcloud container images list
gcloud container images list --repository us.gcr.io/<project-name> #Search in other subdomains repositories
gcloud container images describe <name>
gcloud container subnets list-usable
gcloud container clusters list
gcloud container clusters describe <name>
gcloud container clusters get-credentials [NAME]

# Run a container locally
docker run --rm -ti gcr.io/<project-name>/secret:v1 sh

# Login & Download
sudo docker login -u oauth2accesstoken -p $(gcloud auth print-access-token) https://HOSTNAME
## where HOSTNAME is gcr.io, us.gcr.io, eu.gcr.io, or asia.gcr.io.
sudo docker pull HOSTNAME/<project-name>/<image-name>

Privesc

Na página a seguir, você pode verificar como abusar das permissões de contêiner para escalar privilégios:

GCP - Container Privesc

Node Pools

Esses são os pools de máquinas (nós) que formam os clusters do kubernetes.

bash
# Pool of machines used by the cluster
gcloud container node-pools list --zone <zone> --cluster <cluster>
gcloud container node-pools describe --cluster <cluster> --zone <zone> <node-pool>

Kubernetes

Para informações sobre o que é Kubernetes, consulte esta página:

Kubernetes Pentesting

Primeiro, você pode verificar se existem clusters Kubernetes em seu projeto.

gcloud container clusters list

Se você tiver um cluster, pode fazer com que o gcloud configure automaticamente seu arquivo ~/.kube/config. Este arquivo é usado para autenticar você quando utiliza kubectl, a CLI nativa para interagir com clusters K8s. Tente este comando.

gcloud container clusters get-credentials [CLUSTER NAME] --region [REGION]

Em seguida, dê uma olhada no arquivo ~/.kube/config para ver as credenciais geradas. Este arquivo será usado para atualizar automaticamente os tokens de acesso com base na mesma identidade que sua sessão ativa do gcloud está usando. Isso, é claro, requer as permissões corretas.

Uma vez que isso esteja configurado, você pode tentar o seguinte comando para obter a configuração do cluster.

kubectl cluster-info

Você pode ler mais sobre gcloud para containers aqui.

Este é um script simples para enumerar kubernetes no GCP: https://gitlab.com/gitlab-com/gl-security/security-operations/gl-redteam/gcp_k8s_enum

Escalação de Privilégios TLS Boostrap

Inicialmente, essa técnica de escalonamento de privilégios permitia privesc dentro do cluster GKE, permitindo efetivamente que um atacante comprometesse totalmente.

Isso ocorre porque o GKE fornece credenciais de TLS Bootstrap nos metadados, que são acessíveis por qualquer um que comprometer um pod.

A técnica utilizada é explicada nas seguintes postagens:

E essa ferramenta foi criada para automatizar o processo: https://github.com/4ARMED/kubeletmein

No entanto, a técnica abusou do fato de que com as credenciais de metadados era possível gerar um CSR (Certificate Signing Request) para um novo nó, que era automaticamente aprovado.
Nos meus testes, verifiquei que esses pedidos não são mais automaticamente aprovados, então não tenho certeza se essa técnica ainda é válida.

Segredos na API do Kubelet

Em esta postagem foi descoberto um endereço da API do Kubelet acessível de dentro de um pod no GKE, fornecendo os detalhes dos pods em execução:

curl -v -k http://10.124.200.1:10255/pods

Mesmo que a API não permita modificar recursos, pode ser possível encontrar informações sensíveis na resposta. O endpoint /pods foi encontrado usando Kiterunner.

tip

Aprenda e pratique Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Aprenda e pratique Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE) Aprenda e pratique Hacking Azure: HackTricks Training Azure Red Team Expert (AzRTE)

Support HackTricks