GCP - Containers & GKE Enum
Last updated
Last updated
Aprende y practica Hacking en AWS:HackTricks Training AWS Red Team Expert (ARTE) Aprende y practica Hacking en GCP: HackTricks Training GCP Red Team Expert (GRTE)
En los contenedores de GCP puedes encontrar la mayoría de los servicios basados en contenedores que GCP ofrece, aquí puedes ver cómo enumerar los más comunes:
En la siguiente página puedes verificar cómo abusar de los permisos de los contenedores para escalar privilegios:
Estos son los grupos de máquinas (nodos) que forman los clústeres de kubernetes.
Para obtener información sobre qué es Kubernetes, consulta esta página:
Primero, puedes verificar si existen clústeres de Kubernetes en tu proyecto.
Si tienes un clúster, puedes hacer que gcloud
configure automáticamente tu archivo ~/.kube/config
. Este archivo se utiliza para autenticarte cuando usas kubectl, la CLI nativa para interactuar con clústeres de K8s. Prueba este comando.
Luego, echa un vistazo al archivo ~/.kube/config
para ver las credenciales generadas. Este archivo se utilizará para actualizar automáticamente los tokens de acceso en función de la misma identidad que está utilizando tu sesión activa de gcloud
. Esto, por supuesto, requiere que se tengan los permisos correctos.
Una vez que esto esté configurado, puedes intentar el siguiente comando para obtener la configuración del clúster.
Puedes leer más sobre gcloud
para contenedores aquí.
Este es un script simple para enumerar kubernetes en GCP: https://gitlab.com/gitlab-com/gl-security/security-operations/gl-redteam/gcp_k8s_enum
Inicialmente, esta técnica de escalación de privilegios permitía privesc dentro del clúster GKE, permitiendo efectivamente a un atacante comprometerlo completamente.
Esto se debe a que GKE proporciona credenciales de TLS Bootstrap en los metadatos, que son accesibles por cualquier persona al comprometer un pod.
La técnica utilizada se explica en las siguientes publicaciones:
Y esta herramienta fue creada para automatizar el proceso: https://github.com/4ARMED/kubeletmein
Sin embargo, la técnica abusó del hecho de que con las credenciales de metadatos era posible generar un CSR (Solicitud de Firma de Certificado) para un nuevo nodo, que fue aprobado automáticamente. En mi prueba verifiqué que esas solicitudes ya no son aprobadas automáticamente, así que no estoy seguro si esta técnica sigue siendo válida.
En esta publicación se descubrió una dirección de API de Kubelet accesible desde dentro de un pod en GKE que proporciona los detalles de los pods en ejecución:
Incluso si la API no permite modificar recursos, podría ser posible encontrar información sensible en la respuesta. El endpoint /pods fue encontrado usando Kiterunner.
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)