GCP - Cloudbuild Privesc
Reading time: 5 minutes
tip
AWSハッキングを学び、実践する:HackTricks Training AWS Red Team Expert (ARTE)
GCPハッキングを学び、実践する:HackTricks Training GCP Red Team Expert (GRTE)
Azureハッキングを学び、実践する:
HackTricks Training Azure Red Team Expert (AzRTE)
HackTricksをサポートする
- サブスクリプションプランを確認してください!
- **💬 Discordグループまたはテレグラムグループに参加するか、Twitter 🐦 @hacktricks_liveをフォローしてください。
- HackTricksおよびHackTricks CloudのGitHubリポジトリにPRを提出してハッキングトリックを共有してください。
cloudbuild
Cloud Buildに関する詳細情報は、以下を確認してください:
cloudbuild.builds.create
, iam.serviceAccounts.actAs
この権限を持つことで、クラウドビルドを提出できます。cloudbuildマシンのファイルシステムには、デフォルトでcloudbuildサービスアカウントのトークンが含まれています:<PROJECT_NUMBER>@cloudbuild.gserviceaccount.com
。ただし、cloudbuildの設定内でプロジェクト内の任意のサービスアカウントを指定することができます。
したがって、トークンをあなたのサーバーにエクスフィルトレートさせるか、その中でリバースシェルを取得してトークンを入手することができます(トークンを含むファイルは変更される可能性があります)。
元のエクスプロイトスクリプトはこちらのGitHubで見つけることができます(ただし、トークンを取得する場所は私には機能しませんでした)。そのため、脆弱な環境の作成、エクスプロイト、クリーンアップを自動化するスクリプトはこちらと、cloudbuildマシン内でリバースシェルを取得し、それを盗むためのPythonスクリプトはこちらで見つけることができます(コード内で他のサービスアカウントを指定する方法がわかります)。
より詳細な説明については、https://rhinosecuritylabs.com/gcp/iam-privilege-escalation-gcp-cloudbuild/を訪れてください。
cloudbuild.builds.update
潜在的にこの権限を持つことで、クラウドビルドを更新し、サービスアカウントのトークンを盗むことができるでしょう(ただし、残念ながらこの執筆時点ではそのAPIを呼び出す方法を見つけることができませんでした)。
TODO
cloudbuild.repositories.accessReadToken
この権限を持つユーザーは、リポジトリにアクセスするために使用される読み取りアクセス トークンを取得できます:
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
-d '{}' \
"https://cloudbuild.googleapis.com/v2/projects/<PROJECT_ID>/locations/<LOCATION>/connections/<CONN_ID>/repositories/<repo-id>:accessReadToken"
cloudbuild.repositories.accessReadWriteToken
この権限を持つユーザーは、リポジトリにアクセスするために使用される読み取りおよび書き込みアクセストークンを取得できます:
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
-d '{}' \
"https://cloudbuild.googleapis.com/v2/projects/<PROJECT_ID>/locations/<LOCATION>/connections/<CONN_ID>/repositories/<repo-id>:accessReadWriteToken"
cloudbuild.connections.fetchLinkableRepositories
この権限を使用すると、接続がアクセスできるリポジトリを取得できます:
curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
"https://cloudbuild.googleapis.com/v2/projects/<PROJECT_ID>/locations/<LOCATION>/connections/<CONN_ID>:fetchLinkableRepositories"
tip
AWSハッキングを学び、実践する:HackTricks Training AWS Red Team Expert (ARTE)
GCPハッキングを学び、実践する:HackTricks Training GCP Red Team Expert (GRTE)
Azureハッキングを学び、実践する:
HackTricks Training Azure Red Team Expert (AzRTE)
HackTricksをサポートする
- サブスクリプションプランを確認してください!
- **💬 Discordグループまたはテレグラムグループに参加するか、Twitter 🐦 @hacktricks_liveをフォローしてください。
- HackTricksおよびHackTricks CloudのGitHubリポジトリにPRを提出してハッキングトリックを共有してください。