GCP - Containers, GKE & Composer Enum
Containers
Nos containers do 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:
Escalonamento de Privilégios
Na página a seguir, você pode verificar como abusar das permissões de contêiner para escalar privilégios:
pageGCP - Container PrivescPools de Nós
Estes são os grupos de máquinas (nós) que formam os clusters kubernetes.
Composer
Esta é a versão gerenciada pelo GCP do Airflow.
Escalonamento de Privilégios
Na página a seguir, você pode verificar como abusar das permissões do composer para escalar privilégios:
pageGCP - Composer PrivescKubernetes
Para informações sobre o que é Kubernetes, consulte esta página:
pageKubernetes PentestingPrimeiro, você pode verificar se existem clusters Kubernetes no seu projeto.
Se você possui um cluster, pode configurar automaticamente o arquivo ~/.kube/config
com gcloud
. Este arquivo é usado para autenticá-lo quando você usa kubectl, a CLI nativa para interagir com clusters K8s. Experimente 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 gcloud
está usando. Isso, claro, requer as permissões corretas configuradas.
Uma vez 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
Escalada de Privilégio TLS Boostrap
Inicialmente, esta técnica de escalada de privilégio permitia privesc dentro do cluster GKE, permitindo efetivamente que um atacante comprometesse completamente.
Isso ocorre porque o GKE fornece credenciais de Bootstrap TLS 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 um CSR (Pedido de Assinatura de Certificado) para um novo nó, que era automaticamente aprovado. No meu teste, verifiquei que esses pedidos não são mais aprovados automaticamente, então não tenho certeza se esta técnica ainda é válida.
Segredos na API Kubelet
Neste post foi descoberto um endereço da API Kubelet acessível de dentro de um pod no GKE, dando 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.
Última actualización