GCP - Run Privesc
Cloud Run
Para obtener más información sobre Cloud Run, consulta:
pageGCP - 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 puede crear un servicio de ejecución que ejecute código arbitrario (contenedor Docker arbitrario), adjuntarle una Cuenta de Servicio y hacer que el código exfiltre el token de la Cuenta de Servicio desde los metadatos.
Un script de explotación para este método se puede encontrar aquí y la imagen 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
Similar al anterior pero actualizando un servicio:
run.services.setIamPolicy
run.services.setIamPolicy
Otórgate permisos anteriores sobre Cloud Run.
run.jobs.create
, run.jobs.run
, (run.jobs.get
)
run.jobs.create
, run.jobs.run
, (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 el SA, el comando y ejecutarlo:
run.jobs.setIamPolicy
run.jobs.setIamPolicy
Otórgate los permisos anteriores sobre Cloud Jobs.
Referencias
Última actualización