GCP - Cloudbuild Privesc

Apprenez le piratage AWS de zéro à héros avec htARTE (Expert Red Team AWS HackTricks)!

Autres façons de soutenir HackTricks :

cloudbuild

Pour plus d'informations sur Cloud Build, consultez :

pageGCP - Cloud Build Enum

cloudbuild.builds.create

Avec cette autorisation, vous pouvez soumettre une construction cloud. La machine cloudbuild aura par défaut un jeton du compte de service cloudbuild dans son système de fichiers : <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 jeton vers votre serveur ou obtenir un shell inversé à l'intérieur et récupérer le jeton vous-même (le fichier contenant le jeton pourrait changer).

Vous pouvez trouver le script d'exploitation original ici sur GitHub (mais l'emplacement d'où il prend le jeton n'a pas fonctionné pour moi). Par conséquent, consultez 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.builds.update

Potentiellement avec cette autorisation, vous pourrez mettre à jour une construction cloud et simplement voler le jeton du compte de service comme cela a été fait avec l'autorisation précédente (mais malheureusement, au moment de la rédaction de cet article, je n'ai pas trouvé de moyen d'appeler cette API).

À FAIRE

cloudbuild.repositories.accessReadToken

Avec cette autorisation, l'utilisateur peut obtenir le jeton 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 en é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 autorisation, 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"
Apprenez le piratage AWS de zéro à héros avec htARTE (Expert Red Team AWS de HackTricks)!

D'autres façons de soutenir HackTricks :

Dernière mise à jour