GCP - Cloudbuild Privesc
cloudbuild
Pour plus d'informations sur Cloud Build, consultez :
GCP - Cloud Build Enumcloudbuild.builds.create
cloudbuild.builds.create
Avec cette permission, vous pouvez soumettre une construction cloud. La machine cloudbuild aura par défaut un jeton du Service Account cloudbuild dans son système de fichiers : <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 exfiltrer le jeton par la machine vers votre serveur ou obtenir un reverse shell à l'intérieur et récupérer vous-même le jeton (le fichier contenant le jeton peut changer).
Vous pouvez trouver le script d'exploitation original ici sur GitHub (mais l'emplacement d'où il récupère 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 reverse shell à l'intérieur de la machine cloudbuild et le voler ici (dans le code, vous pouvez trouver comment spécifier d'autres service accounts).
Pour une explication plus détaillée, visitez https://rhinosecuritylabs.com/gcp/iam-privilege-escalation-gcp-cloudbuild/
cloudbuild.builds.update
cloudbuild.builds.update
Potentiellement, avec cette permission, vous pourrez mettre à jour une construction cloud et simplement voler le jeton du service account comme cela a été fait avec la permission précédente (mais malheureusement, au moment de la rédaction, je n'ai trouvé aucun moyen d'appeler cette API).
TODO
cloudbuild.repositories.accessReadToken
cloudbuild.repositories.accessReadToken
Avec cette permission, l'utilisateur peut obtenir le jeton d'accès en lecture utilisé pour accéder au dépôt :
cloudbuild.repositories.accessReadWriteToken
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 :
cloudbuild.connections.fetchLinkableRepositories
cloudbuild.connections.fetchLinkableRepositories
Avec cette permission, vous pouvez obtenir les dépôts auxquels la connexion a accès :
Last updated