GCP - Containers & GKE Enum
Containers
Nos contêineres da GCP, você pode encontrar a maioria dos serviços baseados em contêineres que a GCP oferece, aqui você pode ver como enumerar os mais comuns:
Elevação de Privilégios
Na página a seguir, você pode verificar como abusar das permissões do contêiner para elevar privilégios:
GCP - Container PrivescPools de Nós
Estes são os conjuntos de máquinas (nós) que formam os clusters do Kubernetes.
Kubernetes
Para obter informações sobre o que é o Kubernetes, consulte esta página:
Kubernetes PentestingPrimeiro, você pode verificar se existem clusters do Kubernetes em seu projeto.
Se você já tem um cluster, você pode ter o gcloud
configurar automaticamente o seu arquivo ~/.kube/config
. Esse arquivo é usado para autenticar você ao usar kubectl, a CLI nativa para interagir com clusters K8s. Experimente este comando.
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 em vigor.
Depois que isso estiver configurado, você pode tentar o seguinte comando para obter a configuração do cluster.
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 do Bootstrap TLS
Inicialmente, esta técnica de escalonamento de privilégios permitia escalar privilégios dentro do cluster GKE permitindo efetivamente a um atacante comprometê-lo completamente.
Isso ocorre porque o GKE fornece credenciais de inicialização do TLS Bootstrap nos metadados, que são acessíveis por qualquer pessoa apenas comprometendo um pod.
A técnica utilizada é explicada nos seguintes posts:
E esta ferramenta foi criada para automatizar o processo: https://github.com/4ARMED/kubeletmein
No entanto, a técnica abusava do fato de que com as credenciais dos metadados era possível gerar uma CSR (Solicitação de Assinatura de Certificado) para um novo nó, que era aprovado automaticamente. No meu teste, verifiquei que essas solicitações não são mais aprovadas automaticamente, então não tenho certeza se essa técnica ainda é válida.
Segredos na API do Kubelet
Neste post foi descoberto um endereço da API do Kubelet acessível de dentro de um pod no GKE que fornece 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.
Last updated