GCP - Run Privesc
Cloud Run
Pour plus d'informations sur Cloud Run, consultez :
GCP - Cloud Run Enumrun.services.create
, iam.serviceAccounts.actAs
, run.routes.invoke
run.services.create
, iam.serviceAccounts.actAs
, run.routes.invoke
Un attaquant avec ces permissions pour créer un service run exécutant du code arbitraire (conteneur Docker arbitraire), attacher un compte de service à celui-ci, et faire en sorte que le code exfiltre le jeton du compte de service depuis les métadonnées.
Un script d'exploitation pour cette méthode peut être trouvé ici et l'image Docker peut être trouvée ici.
Notez que lors de l'utilisation de gcloud run deploy
au lieu de simplement créer le service, il nécessite la permission update
. Consultez un exemple ici.
run.services.update
, iam.serviceAccounts.actAs
run.services.update
, iam.serviceAccounts.actAs
Comme le précédent mais en mettant à jour un service :
run.services.setIamPolicy
run.services.setIamPolicy
Donnez-vous des autorisations précédentes sur Cloud 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
)Lancez un job avec un shell inversé pour voler le compte de service indiqué dans la commande. Vous pouvez trouver un exploit ici.
run.jobs.update
,run.jobs.run
,iam.serviceaccounts.actAs
,(run.jobs.get
)
run.jobs.update
,run.jobs.run
,iam.serviceaccounts.actAs
,(run.jobs.get
)Semblable à la précédente, il est possible de mettre à jour un job et de mettre à jour le SA, la commande et de l'exécuter :
run.jobs.setIamPolicy
run.jobs.setIamPolicy
Donnez-vous les permissions précédentes sur Cloud Jobs.
Références
Last updated