GCP - Cloudbuild Privesc
cloudbuild
Cloud Buildの詳細については以下を参照してください:
GCP - Cloud Build Enumcloudbuild.builds.create
cloudbuild.builds.create
この権限があれば、クラウドビルドを送信できます。cloudbuildマシンのファイルシステムにはデフォルトでcloudbuildサービスアカウントのトークンが含まれています: <PROJECT_NUMBER>@cloudbuild.gserviceaccount.com
。ただし、cloudbuildの設定でプロジェクト内の任意のサービスアカウントを指定することができます。
したがって、マシンにトークンをあなたのサーバーに漏洩させるか、リバースシェルを取得してトークンを自分で取得することができます(トークンを含むファイルは変更される可能性があります)。
オリジナルのエクスプロイトスクリプトはGitHubのこちらで見つけることができます(ただし、トークンを取得する場所は私には機能しませんでした)。したがって、脆弱な環境の作成、エクスプロイト、およびクリーンアップを自動化するスクリプトはこちらと、cloudbuildマシン内でリバースシェルを取得しトークンを盗むためのPythonスクリプトはこちらをチェックしてください(コード内で他のサービスアカウントを指定する方法がわかります)。
詳細な説明については、https://rhinosecuritylabs.com/gcp/iam-privilege-escalation-gcp-cloudbuild/を参照してください。
cloudbuild.builds.update
cloudbuild.builds.update
潜在的にこの権限があれば、クラウドビルドを更新し、サービスアカウントトークンを盗むことができるでしょう(ただし、この記事を書いている時点ではそのAPIを呼び出す方法を見つけることができませんでした)。
TODO
cloudbuild.repositories.accessReadToken
cloudbuild.repositories.accessReadToken
この権限があれば、ユーザーはリポジトリにアクセスするための読み取りアクセス トークンを取得できます:
cloudbuild.repositories.accessReadWriteToken
cloudbuild.repositories.accessReadWriteToken
この権限を持つユーザーは、リポジトリにアクセスするための読み書きアクセス トークンを取得できます:
cloudbuild.connections.fetchLinkableRepositories
cloudbuild.connections.fetchLinkableRepositories
この権限を持つと、接続がアクセスできるリポジトリを取得できます:
Last updated