GCP - Containers & GKE Enum
Last updated
Last updated
Aprenda e pratique Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE) Aprenda e pratique Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)
Nos containers GCP você pode encontrar a maioria dos serviços baseados em containers que o GCP oferece, aqui você pode ver como enumerar os mais comuns:
Na página a seguir, você pode verificar como abusar das permissões do contêiner para escalar privilégios:
GCP - Container PrivescEsses são os pools de máquinas (nós) que formam os clusters do kubernetes.
Para informações sobre o que é Kubernetes, consulte esta página:
Kubernetes PentestingPrimeiro, você pode verificar se existem clusters Kubernetes em seu projeto.
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.
Então, 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.
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
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 apenas comprometendo um pod.
A técnica utilizada é explicada nas seguintes postagens:
E esta 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 foi automaticamente aprovado. Nos meus testes, verifiquei que esses pedidos não são mais aprovados automaticamente, então não tenho certeza se essa técnica ainda é válida.
Em esta postagem foi descoberto um endereço da API Kubelet acessível de dentro de um pod no GKE, fornecendo os detalhes dos pods em execução:
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.
Aprenda e pratique Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE) Aprenda e pratique Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)