GCP - Cloudbuild Privesc
cloudbuild
Pour plus d'informations sur Cloud Build, consultez :
pageGCP - Cloud Build Enumcloudbuild.builds.create
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
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
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 :
cloudbuild.repositories.accessReadWriteToken
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 :
cloudbuild.connections.fetchLinkableRepositories
cloudbuild.connections.fetchLinkableRepositories
Avec cette autorisation, vous pouvez obtenir les dépôts auxquels la connexion a accès :
Dernière mise à jour