GCP - Run Privesc
Cloud Run
Para más información sobre Cloud Run, consulta:
GCP - Cloud Run Enumrun.services.create
, iam.serviceAccounts.actAs
, run.routes.invoke
run.services.create
, iam.serviceAccounts.actAs
, run.routes.invoke
Un atacante con estos permisos para crear un servicio de run que ejecute código arbitrario (contenedor Docker arbitrario), adjuntar una Cuenta de Servicio a él, y hacer que el código exfiltre el token de la Cuenta de Servicio de los metadatos.
Un script de explotación para este método se puede encontrar aquí y la imagen de Docker se puede encontrar aquí.
Ten en cuenta que al usar gcloud run deploy
en lugar de solo crear el servicio necesita el permiso update
. Consulta un ejemplo aquí.
run.services.update
, iam.serviceAccounts.actAs
run.services.update
, iam.serviceAccounts.actAs
Como el anterior, pero actualizando un servicio:
run.services.setIamPolicy
run.services.setIamPolicy
Otórgate permisos previos sobre 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
)Lanza un trabajo con un shell inverso para robar la cuenta de servicio indicada en el comando. Puedes encontrar un exploit aquí.
run.jobs.update
,run.jobs.run
,iam.serviceaccounts.actAs
,(run.jobs.get
)
run.jobs.update
,run.jobs.run
,iam.serviceaccounts.actAs
,(run.jobs.get
)Similar al anterior, es posible actualizar un trabajo y actualizar la SA, el comando y ejecutarlo:
run.jobs.setIamPolicy
run.jobs.setIamPolicy
Otórgate los permisos anteriores sobre Cloud Jobs.
Referencias
Last updated