GCP - Run Privesc
Cloud Run
Für weitere Informationen zu Cloud Run siehe:
pageGCP - Cloud Run Enumrun.services.create
, iam.serviceAccounts.actAs
, run.routes.invoke
run.services.create
, iam.serviceAccounts.actAs
, run.routes.invoke
Ein Angreifer mit diesen Berechtigungen kann einen Run-Service erstellen, der beliebigen Code ausführt (beliebigen Docker-Container), einen Service Account daran anhängen und den Code veranlassen, das Service Account-Token aus den Metadaten zu exfiltrieren.
Ein Exploit-Skript für diese Methode finden Sie hier und das Docker-Image finden Sie hier.
Beachten Sie, dass bei Verwendung von gcloud run deploy
anstelle des einfachen Erstellens des Dienstes die Berechtigung update
erforderlich ist. Überprüfen Sie ein Beispiel hier.
run.services.update
, iam.serviceAccounts.actAs
run.services.update
, iam.serviceAccounts.actAs
Ähnlich wie der vorherige, aber ein Dienst wird aktualisiert:
run.services.setIamPolicy
run.services.setIamPolicy
Geben Sie sich zuvor Berechtigungen über Cloud Run.
run.jobs.create
, run.jobs.run
, (run.jobs.get
)
run.jobs.create
, run.jobs.run
, (run.jobs.get
)Starten Sie einen Job mit einer Reverse-Shell, um das im Befehl angegebene Dienstkonto zu stehlen. Sie können hier eine Ausnutzung finden.
run.jobs.update
,run.jobs.run
,iam.serviceaccounts.actAs
,(run.jobs.get
)
run.jobs.update
,run.jobs.run
,iam.serviceaccounts.actAs
,(run.jobs.get
)Ähnlich wie zuvor ist es möglich, einen Job zu aktualisieren und das SA zu aktualisieren, den Befehl zu ausführen:
run.jobs.setIamPolicy
run.jobs.setIamPolicy
Geben Sie sich die zuvor genannten Berechtigungen für Cloud Jobs.
Referenzen
Last updated