GCP Pentesting
Tip
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)
Aprende y practica Hacking en Azure:
HackTricks Training Azure Red Team Expert (AzRTE)
Apoya a HackTricks
- Revisa los planes de suscripción!
- Únete al 💬 grupo de Discord o al grupo de telegram o síguenos en Twitter 🐦 @hacktricks_live.
- Comparte trucos de hacking enviando PRs a los HackTricks y HackTricks Cloud repositorios de github.
Información Básica
Antes de comenzar el pentesting en un GCP ambiente, hay algunas cosas básicas que necesitas saber sobre cómo funciona para ayudarte a entender qué necesitas hacer, cómo encontrar configuraciones incorrectas y cómo explotarlas.
Conceptos como organización, permisos y otros conceptos básicos se explican en:
Laboratorios para aprender
- https://gcpgoat.joshuajebaraj.com/
- https://github.com/ine-labs/GCPGoat
- https://github.com/lacioffi/GCP-pentest-lab/
- https://github.com/carlospolop/gcp_privesc_scripts
Metodología de Pentester/Red Team en GCP
Para auditar un ambiente de GCP, es muy importante saber: qué servicios se están utilizando, qué está siendo expuesto, quién tiene acceso a qué, y cómo están conectados los servicios internos de GCP y los servicios externos.
Desde el punto de vista de un Red Team, el primer paso para comprometer un ambiente de GCP es lograr obtener algunas credenciales. Aquí tienes algunas ideas sobre cómo hacerlo:
- Filtraciones en github (o similar) - OSINT
- Ingeniería Social (Consulta la página Seguridad de Workspace)
- Reutilización de contraseñas (filtraciones de contraseñas)
- Vulnerabilidades en Aplicaciones Alojadas en GCP
- Server Side Request Forgery con acceso al endpoint de metadatos
- Lectura de Archivos Locales
/home/USERNAME/.config/gcloud/*C:\Users\USERNAME\.config\gcloud\*- terceros comprometidos
- Empleado Interno
O comprometiendo un servicio no autenticado expuesto:
GCP - Unauthenticated Enum & Access
O si estás haciendo una revisión, podrías simplemente pedir credenciales con estos roles:
GCP - Permissions for a Pentest
Note
Después de haber logrado obtener credenciales, necesitas saber a quién pertenecen esas credenciales, y a qué tienen acceso, por lo que necesitas realizar alguna enumeración básica:
Enumeración Básica
SSRF
Para más información sobre cómo enumerar metadatos de GCP, consulta la siguiente página de hacktricks:
Whoami
En GCP puedes intentar varias opciones para tratar de adivinar quién eres:
#If you are inside a compromise machine
gcloud auth list
curl -H "Content-Type: application/x-www-form-urlencoded" -d "access_token=$(gcloud auth print-access-token)" https://www.googleapis.com/oauth2/v1/tokeninfo
gcloud auth print-identity-token #Get info from the token
#If you compromised a metadata token or somehow found an OAuth token
curl -H "Content-Type: application/x-www-form-urlencoded" -d "access_token=<token>" https://www.googleapis.com/oauth2/v1/tokeninfo
También puedes usar el endpoint de la API /userinfo para obtener más información sobre el usuario:
curl -H "Content-Type: application/x-www-form-urlencoded" -H "Authorization: OAuth $(gcloud auth print-access-token)" https://www.googleapis.com/oauth2/v1/userinfo
curl -H "Content-Type: application/x-www-form-urlencoded" -H "Authorization: OAuth <access_token>" https://www.googleapis.com/oauth2/v1/userinfo
Enumeración de Org
# Get organizations
gcloud organizations list #The DIRECTORY_CUSTOMER_ID is the Workspace ID
gcloud resource-manager folders list --organization <org_number> # Get folders
gcloud projects list # Get projects
Principios y Enumeración de IAM
Si tienes suficientes permisos, verificar los privilegios de cada entidad dentro de la cuenta de GCP te ayudará a entender qué puedes hacer tú y otras identidades y cómo escalar privilegios.
Si no tienes suficientes permisos para enumerar IAM, puedes robarlos mediante fuerza bruta para averiguarlos.
Consulta cómo realizar la enumeración y la fuerza bruta en:
GCP - IAM, Principals & Org Policies Enum
Note
Ahora que tienes algo de información sobre tus credenciales (y si eres un red team, espero que no hayas sido detectado). Es hora de averiguar qué servicios se están utilizando en el entorno.
En la siguiente sección puedes consultar algunas formas de enumerar algunos servicios comunes.
Enumeración de Servicios
GCP tiene una asombrosa cantidad de servicios, en la siguiente página encontrarás información básica, cheatsheets de enumeración, cómo evitar la detección, obtener persistencia y otros trucos de post-explotación sobre algunos de ellos:
Ten en cuenta que no necesitas realizar todo el trabajo manualmente, a continuación en esta publicación puedes encontrar una sección sobre herramientas automáticas.
Además, en esta etapa podrías haber descubierto más servicios expuestos a usuarios no autenticados, podrías ser capaz de explotarlos:
GCP - Unauthenticated Enum & Access
Escalación de Privilegios, Post Explotación y Persistencia
La forma más común una vez que has obtenido algunas credenciales de la nube o has comprometido algún servicio que se ejecuta dentro de una nube es abusar de los privilegios mal configurados que puede tener la cuenta comprometida. Así que, lo primero que debes hacer es enumerar tus privilegios.
Además, durante esta enumeración, recuerda que los permisos pueden establecerse en el nivel más alto de “Organización” también.
Servicios Expuestos Públicamente
Mientras enumerabas los servicios de GCP, podrías haber encontrado algunos de ellos exponiendo elementos a Internet (puertos de VM/Contenedores, bases de datos o servicios de cola, instantáneas o buckets…).
Como pentester/red teamer, siempre deberías verificar si puedes encontrar información sensible / vulnerabilidades en ellos, ya que podrían proporcionarte acceso adicional a la cuenta de AWS.
En este libro deberías encontrar información sobre cómo encontrar servicios de GCP expuestos y cómo verificarlos. Sobre cómo encontrar vulnerabilidades en servicios de red expuestos, te recomendaría buscar el servicio específico en:
GCP <–> Workspace Pivoting
Comprometer principios en una plataforma podría permitir a un atacante comprometer la otra, consúltalo en:
Herramientas Automáticas
- En la consola de GCloud, en https://console.cloud.google.com/iam-admin/asset-inventory/dashboard puedes ver los recursos y IAMs que se están utilizando por proyecto.
- Aquí puedes ver los activos soportados por esta API: https://cloud.google.com/asset-inventory/docs/supported-asset-types
- Consulta herramientas que pueden ser utilizadas en varias nubes aquí.
- gcp_scanner: Este es un escáner de recursos de GCP que puede ayudar a determinar qué nivel de acceso poseen ciertas credenciales en GCP.
# Install
git clone https://github.com/google/gcp_scanner.git
cd gcp_scanner
virtualenv -p python3 venv
source venv/bin/activate
pip install -r requirements.txt
# Execute with gcloud creds
python3 __main__.py -o /tmp/output/ -g "$HOME/.config/gcloud"
- gcp_enum: Script de Bash para enumerar un entorno de GCP utilizando gcloud cli y guardar los resultados en un archivo.
- GCP-IAM-Privilege-Escalation: Scripts para enumerar altos privilegios de IAM y para escalar privilegios en GCP abusando de ellos (no pude hacer funcionar el script de enumeración).
- BF My GCP Permissions: Script para forzar tus permisos.
gcloud config & debug
# Login so gcloud can use your credentials
gcloud auth login
gcloud config set project security-devbox
gcloud auth print-access-token
# Login so SDKs can use your user credentials
gcloud auth application-default login
gcloud auth application-default set-quota-project security-devbox
gcloud auth application-default print-access-token
# Update gcloud
gcloud components update
Captura de gcloud, gsutil… red
Recuerda que puedes usar el parámetro --log-http con el gcloud cli para imprimir las solicitudes que la herramienta está realizando. Si no deseas que los registros redacten el valor del token, usa gcloud config set log_http_redact_token false
Además, para interceptar la comunicación:
gcloud config set proxy/address 127.0.0.1
gcloud config set proxy/port 8080
gcloud config set proxy/type http
gcloud config set auth/disable_ssl_validation True
# If you don't want to completely disable ssl_validation use:
gcloud config set core/custom_ca_certs_file cert.pem
# Back to normal
gcloud config unset proxy/address
gcloud config unset proxy/port
gcloud config unset proxy/type
gcloud config unset auth/disable_ssl_validation
gcloud config unset core/custom_ca_certs_file
Configuración del token OAuth en gcloud
Para usar un token OAuth de cuenta de servicio exfiltrado desde el endpoint de metadatos simplemente puedes hacer:
# Via env vars
export CLOUDSDK_AUTH_ACCESS_TOKEN=<token>
gcloud projects list
# Via setup
echo "<token>" > /some/path/to/token
gcloud config set auth/access_token_file /some/path/to/token
gcloud projects list
gcloud config unset auth/access_token_file
Referencias
Tip
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)
Aprende y practica Hacking en Azure:
HackTricks Training Azure Red Team Expert (AzRTE)
Apoya a HackTricks
- Revisa los planes de suscripción!
- Únete al 💬 grupo de Discord o al grupo de telegram o síguenos en Twitter 🐦 @hacktricks_live.
- Comparte trucos de hacking enviando PRs a los HackTricks y HackTricks Cloud repositorios de github.
HackTricks Cloud

