GCP - Run Privesc
Cloud Run
Cloud Runに関する詳細情報は以下を確認してください:
GCP - Cloud Run Enumrun.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
)コマンドで指定されたサービスアカウントを盗むためにリバースシェルを持つジョブを起動します。 ここにエクスプロイトがあります。
run.jobs.update
,run.jobs.run
,iam.serviceaccounts.actAs
,(run.jobs.get
)
run.jobs.update
,run.jobs.run
,iam.serviceaccounts.actAs
,(run.jobs.get
)前のものと同様に、ジョブを更新し、SAを更新することが可能で、コマンドを実行することができます:
run.jobs.setIamPolicy
run.jobs.setIamPolicy
Cloud Jobsに対する以前の権限を自分に付与します。
References
Last updated