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
- Confira os planos de assinatura!
- Junte-se ao 💬 grupo do Discord ou ao grupo do telegram ou siga-nos no Twitter 🐦 @hacktricks_live.
- Compartilhe truques de hacking enviando PRs para o HackTricks e HackTricks Cloud repositórios do github.
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:
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:
Node Pools
Esses são os pools de máquinas (nós) que formam os clusters do kubernetes.
# 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:
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:
- https://www.4armed.com/blog/hacking-kubelet-on-gke/
- https://www.4armed.com/blog/kubeletmein-kubelet-hacking-tool/
- https://rhinosecuritylabs.com/cloud-security/kubelet-tls-bootstrap-privilege-escalation/
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
- Confira os planos de assinatura!
- Junte-se ao 💬 grupo do Discord ou ao grupo do telegram ou siga-nos no Twitter 🐦 @hacktricks_live.
- Compartilhe truques de hacking enviando PRs para o HackTricks e HackTricks Cloud repositórios do github.