GCP - Cloudbuild Privesc
cloudbuild
Für weitere Informationen über Cloud Build siehe:
GCP - Cloud Build Enumcloudbuild.builds.create
cloudbuild.builds.create
Mit dieser Berechtigung kannst du einen Cloud Build einreichen. Die Cloudbuild-Maschine hat standardmäßig ein Token des Cloudbuild Service Accounts im Dateisystem: <PROJECT_NUMBER>@cloudbuild.gserviceaccount.com
. Du kannst jedoch jedem Service Account im Projekt in der Cloudbuild-Konfiguration angeben.
Daher kannst du die Maschine einfach das Token an deinen Server exfiltrieren lassen oder eine Reverse Shell darin erhalten und dir selbst das Token holen (die Datei, die das Token enthält, könnte sich ändern).
Du findest das ursprüngliche Exploit-Skript hier auf GitHub (aber der Ort, von dem es das Token nimmt, hat für mich nicht funktioniert). Daher überprüfe ein Skript zur Automatisierung der Erstellung, Ausnutzung und Bereinigung einer verwundbaren Umgebung hier und ein Python-Skript, um eine Reverse Shell in der Cloudbuild-Maschine zu erhalten und es hier zu stehlen (im Code findest du, wie man andere Service Accounts angibt).
Für eine ausführlichere Erklärung besuche https://rhinosecuritylabs.com/gcp/iam-privilege-escalation-gcp-cloudbuild/
cloudbuild.builds.update
cloudbuild.builds.update
Potentiell kannst du mit dieser Berechtigung einen Cloud Build aktualisieren und einfach das Service Account Token stehlen, wie es mit der vorherigen Berechtigung durchgeführt wurde (aber leider konnte ich zum Zeitpunkt des Schreibens keinen Weg finden, diese API aufzurufen).
TODO
cloudbuild.repositories.accessReadToken
cloudbuild.repositories.accessReadToken
Mit dieser Berechtigung kann der Benutzer das Lesezugriffstoken erhalten, das zum Zugriff auf das Repository verwendet wird:
cloudbuild.repositories.accessReadWriteToken
cloudbuild.repositories.accessReadWriteToken
Mit dieser Berechtigung kann der Benutzer das Lese- und Schreibzugriffstoken abrufen, das zum Zugriff auf das Repository verwendet wird:
cloudbuild.connections.fetchLinkableRepositories
cloudbuild.connections.fetchLinkableRepositories
Mit dieser Berechtigung kannst du die Repos abrufen, auf die die Verbindung Zugriff hat:
Last updated