GCP - Cloudbuild Privesc

Impara l'hacking di AWS da zero a eroe con htARTE (Esperto Red Team di HackTricks AWS)!

Altri modi per supportare HackTricks:

cloudbuild

Per ulteriori informazioni su Cloud Build, controlla:

pageGCP - Cloud Build Enum

cloudbuild.builds.create

Con questa autorizzazione puoi inviare una build cloud. La macchina cloudbuild avrà nel suo filesystem per default un token del Service Account di cloudbuild: <PROJECT_NUMBER>@cloudbuild.gserviceaccount.com. Tuttavia, puoi indicare qualsiasi service account all'interno del progetto nella configurazione di cloudbuild. Pertanto, puoi semplicemente fare in modo che la macchina esfiltrati il token al tuo server o ottenere un reverse shell al suo interno e ottenere il token tu stesso (il file contenente il token potrebbe cambiare).

Puoi trovare lo script di exploit originale qui su GitHub (ma la posizione da cui prende il token non ha funzionato per me). Quindi, controlla uno script per automatizzare la creazione, l'exploit e la pulizia di un ambiente vulnerabile qui e uno script python per ottenere un 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 questa autorizzazione sarai in grado di aggiornare una build cloud e rubare il token del service account come è stato fatto con l'autorizzazione precedente (ma sfortunatamente al momento della stesura di questo testo non ho trovato alcun modo per chiamare tale API).

TODO

cloudbuild.repositories.accessReadToken

Con questa autorizzazione 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 questa autorizzazione 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 questa autorizzazione puoi ottenere i repository ai quali 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 l'hacking su AWS da zero a esperto con htARTE (Esperto Red Team di HackTricks su AWS)!

Altri modi per supportare HackTricks:

Last updated