GCP - Run Privesc
Cloud Run
Aby uzyskać więcej informacji o Cloud Run, sprawdź:
GCP - Cloud Run Enumrun.services.create
, iam.serviceAccounts.actAs
, run.routes.invoke
run.services.create
, iam.serviceAccounts.actAs
, run.routes.invoke
Atakujący z tymi uprawnieniami może utworzyć usługę uruchamiającą dowolny kod (dowolny kontener Docker), dołączyć do niej konto usługi i sprawić, aby kod wyekstrahował token konta usługi z metadanych.
Skrypt exploitujący tę metodę można znaleźć tutaj, a obraz Dockera można znaleźć tutaj.
Zauważ, że używając gcloud run deploy
zamiast po prostu tworzenia usługi potrzebne są uprawnienia update
. Sprawdź przykład tutaj.
run.services.update
, iam.serviceAccounts.actAs
run.services.update
, iam.serviceAccounts.actAs
Jak w poprzednim przypadku, ale aktualizując usługę:
run.services.setIamPolicy
run.services.setIamPolicy
Przyznaj sobie wcześniejsze uprawnienia w chmurze Run.
run.jobs.create
, run.jobs.run
, iam.serviceaccounts.actAs
,(run.jobs.get
)
run.jobs.create
, run.jobs.run
, iam.serviceaccounts.actAs
,(run.jobs.get
)Uruchom zadanie z odwróconym powłoką, aby ukraść konto usługi wskazane w poleceniu. Możesz znaleźć eksploit tutaj.
run.jobs.update
,run.jobs.run
,iam.serviceaccounts.actAs
,(run.jobs.get
)
run.jobs.update
,run.jobs.run
,iam.serviceaccounts.actAs
,(run.jobs.get
)Podobnie jak w poprzednim przypadku, możliwe jest aktualizowanie zadania i aktualizowanie SA, wykonanie polecenia i uruchomienie go:
run.jobs.setIamPolicy
run.jobs.setIamPolicy
Przyznaj sobie wcześniejsze uprawnienia do Cloud Jobs.
References
Last updated