GCP - Run Privesc
Cloud Run
有关 Cloud Run 的更多信息,请查看:
run.services.create
, iam.serviceAccounts.actAs
, run.routes.invoke
run.services.create
, iam.serviceAccounts.actAs
, run.routes.invoke
拥有这些权限的攻击者可以创建一个运行任意代码的运行服务(任意 Docker 容器),将服务账户附加到它,并使代码从元数据中提取服务账户令牌。
此方法的利用脚本可以在 这里 找到,Docker 镜像可以在 这里 找到。
请注意,当使用 gcloud run deploy
而不是仅创建服务时,它需要 update
权限。在 这里查看示例。
run.services.update
, iam.serviceAccounts.actAs
run.services.update
, iam.serviceAccounts.actAs
与前一个类似,但更新服务:
run.services.setIamPolicy
run.services.setIamPolicy
给自己在 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
)启动一个带有反向 shell 的作业,以窃取命令中指示的服务账户。您可以在此处找到漏洞利用。
run.jobs.update
,run.jobs.run
,iam.serviceaccounts.actAs
,(run.jobs.get
)
run.jobs.update
,run.jobs.run
,iam.serviceaccounts.actAs
,(run.jobs.get
)与之前类似,可以更新作业并更新服务账户,命令并执行它:
run.jobs.setIamPolicy
run.jobs.setIamPolicy
授予自己对 Cloud Jobs 的先前权限。
run.jobs.run
, run.jobs.runWithOverrides
, (run.jobs.get
)
run.jobs.run
, run.jobs.runWithOverrides
, (run.jobs.get
)利用作业执行的环境变量执行任意代码,并获取反向 shell 以转储容器的内容(源代码)并访问元数据中的 SA:
参考文献
Last updated