GCP - Run Privesc
Cloud Run
Para mais informações sobre o Cloud Run, verifique:
pageGCP - Cloud Run Enumrun.services.create
, iam.serviceAccounts.actAs
, run.routes.invoke
run.services.create
, iam.serviceAccounts.actAs
, run.routes.invoke
Um atacante com essas permissões para criar um serviço de execução executando código arbitrário (contêiner Docker arbitrário), anexar uma Conta de Serviço a ele e fazer o código exfiltrar o token da Conta de Serviço dos metadados.
Um script de exploração para este método pode ser encontrado aqui e a imagem Docker pode ser encontrada aqui.
Observe que ao usar gcloud run deploy
em vez de apenas criar o serviço é necessário a permissão update
. Verifique um exemplo aqui.
run.services.update
, iam.serviceAccounts.actAs
run.services.update
, iam.serviceAccounts.actAs
Como o anterior, mas atualizando um serviço:
run.services.setIamPolicy
run.services.setIamPolicy
Conceda a si mesmo permissões anteriores sobre o Cloud Run.
run.jobs.create
, run.jobs.run
, (run.jobs.get
)
run.jobs.create
, run.jobs.run
, (run.jobs.get
)Inicie um trabalho com um shell reverso para roubar a conta de serviço indicada no comando. Você pode encontrar um exploit aqui.
run.jobs.update
,run.jobs.run
,iam.serviceaccounts.actAs
,(run.jobs.get
)
run.jobs.update
,run.jobs.run
,iam.serviceaccounts.actAs
,(run.jobs.get
)Semelhante ao anterior, é possível atualizar um trabalho e atualizar o SA, o comando e executá-lo:
run.jobs.setIamPolicy
run.jobs.setIamPolicy
Conceda a si mesmo as permissões anteriores sobre Cloud Jobs.
Referências
Última actualización