GCP - Cloudbuild Privesc
cloudbuild
Für weitere Informationen zu Cloud Build siehe:
pageGCP - Cloud Build Enumcloudbuild.builds.create
cloudbuild.builds.create
Mit dieser Berechtigung können Sie einen Cloud Build einreichen. Die cloudbuild-Maschine wird standardmäßig einen Token des cloudbuild-Servicekontos in ihrem Dateisystem haben: <PROJECT_NUMBER>@cloudbuild.gserviceaccount.com
. Sie können jedoch ein beliebiges Servicekonto innerhalb des Projekts in der cloudbuild-Konfiguration angeben.
Daher können Sie einfach die Maschine dazu bringen, den Token an Ihren Server zu exfiltrieren oder eine Reverse-Shell darin zu erhalten und sich den Token selbst zu besorgen (die Datei, die den Token enthält, könnte sich ändern).
Das ursprüngliche Exploit-Skript finden Sie hier auf GitHub (aber der Ort, von dem es den Token abruft, hat bei mir nicht funktioniert). Überprüfen Sie daher ein Skript zur Automatisierung der Erstellung, des Exploits und der Bereinigung einer verwundbaren Umgebung hier und ein Python-Skript, um eine Reverse-Shell in der cloudbuild-Maschine zu erhalten und sie hier zu stehlen (im Code finden Sie, wie Sie andere Servicekonten angeben können).
Für eine ausführlichere Erklärung besuchen Sie https://rhinosecuritylabs.com/gcp/iam-privilege-escalation-gcp-cloudbuild/
cloudbuild.builds.update
cloudbuild.builds.update
Möglicherweise können Sie mit dieser Berechtigung einen Cloud Build aktualisieren und einfach den Servicekontotoken stehlen, wie es mit der vorherigen Berechtigung durchgeführt wurde (aber leider konnte ich zum Zeitpunkt dieses Schreibens keinen Weg finden, um diese API aufzurufen).
TODO
cloudbuild.repositories.accessReadToken
cloudbuild.repositories.accessReadToken
Mit dieser Berechtigung kann der Benutzer das Lesezugriffstoken abrufen, 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 können Sie die Repositories abrufen, auf die die Verbindung Zugriff hat:
Last updated