GCP - Cloudbuild Privesc

Lernen Sie AWS-Hacking von Null auf Held mit htARTE (HackTricks AWS Red Team Expert)!

Andere Möglichkeiten, HackTricks zu unterstützen:

cloudbuild

Für weitere Informationen zu Cloud Build siehe:

pageGCP - Cloud Build Enum

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

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

Mit dieser Berechtigung kann der Benutzer das Lesezugriffstoken abrufen, das zum Zugriff auf das Repository verwendet wird:

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

Mit dieser Berechtigung kann der Benutzer das Lese- und Schreibzugriffstoken abrufen, das zum Zugriff auf das Repository verwendet wird:

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

Mit dieser Berechtigung können Sie die Repositories abrufen, auf die die Verbindung Zugriff hat:

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"
Erlernen Sie AWS-Hacking von Null auf Held mit htARTE (HackTricks AWS Red Team Expert)!

Andere Möglichkeiten, HackTricks zu unterstützen:

Last updated