GCP Pentesting
Reading time: 14 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を提出してハッキングトリックを共有してください。
基本情報
GCP 環境の ペンテスト を開始する前に、どのように機能するかについて知っておくべき 基本的なこと がいくつかあります。これにより、何をすべきか、誤設定を見つける方法、そしてそれをどのように悪用するかを理解するのに役立ちます。
組織 階層、権限、およびその他の基本的な概念については、以下で説明されています:
学習用ラボ
- https://gcpgoat.joshuajebaraj.com/
- https://github.com/ine-labs/GCPGoat
- https://github.com/lacioffi/GCP-pentest-lab/
- https://github.com/carlospolop/gcp_privesc_scripts
GCP ペンテスター/レッドチームの方法論
GCP 環境を監査するためには、どの サービスが使用されているか、何が 公開されているか、誰が 何にアクセスできるか、および内部 GCP サービスと 外部サービス がどのように接続されているかを知ることが非常に重要です。
レッドチームの観点から、GCP 環境を侵害するための 最初のステップ は、いくつかの 資格情報 を取得することです。以下はその方法のいくつかのアイデアです:
- github (または類似の) での 漏洩 - OSINT
- ソーシャル エンジニアリング (ページ Workspace Security を確認)
- パスワード 再利用 (パスワード漏洩)
- GCP ホストアプリケーションの脆弱性
- サーバーサイドリクエストフォージェリ メタデータエンドポイントへのアクセス
- ローカルファイル読み取り
/home/USERNAME/.config/gcloud/*
C:\Users\USERNAME\.config\gcloud\*
- 第三者の 侵害
- 内部 従業員
または、認証されていないサービス を侵害することによって:
GCP - Unauthenticated Enum & Access
または、レビュー を行っている場合は、これらの役割で 資格情報を要求 することができます:
GCP - Permissions for a Pentest
note
資格情報を取得した後は、それが 誰のものであるか、および 何にアクセスできるか を知る必要があります。したがって、いくつかの基本的な列挙を実行する必要があります:
基本的な列挙
SSRF
GCP メタデータを 列挙する 方法についての詳細は、以下の hacktricks ページを確認してください:
Whoami
GCP では、自分が誰であるかを推測するためにいくつかのオプションを試すことができます:
#If you are inside a compromise machine
gcloud auth list
curl -H "Content-Type: application/x-www-form-urlencoded" -d "access_token=$(gcloud auth print-access-token)" https://www.googleapis.com/oauth2/v1/tokeninfo
gcloud auth print-identity-token #Get info from the token
#If you compromised a metadata token or somehow found an OAuth token
curl -H "Content-Type: application/x-www-form-urlencoded" -d "access_token=<token>" https://www.googleapis.com/oauth2/v1/tokeninfo
APIエンドポイント /userinfo
を使用して、ユーザーに関する詳細情報を取得することもできます:
curl -H "Content-Type: application/x-www-form-urlencoded" -H "Authorization: OAuth $(gcloud auth print-access-token)" https://www.googleapis.com/oauth2/v1/userinfo
curl -H "Content-Type: application/x-www-form-urlencoded" -H "Authorization: OAuth <access_token>" https://www.googleapis.com/oauth2/v1/userinfo
組織の列挙
# Get organizations
gcloud organizations list #The DIRECTORY_CUSTOMER_ID is the Workspace ID
gcloud resource-manager folders list --organization <org_number> # Get folders
gcloud projects list # Get projects
Principals & IAM Enumeration
十分な権限がある場合、GCPアカウント内の各エンティティの権限を確認することは、あなたや他のアイデンティティが何をできるか、また権限を昇格させる方法を理解するのに役立ちます。
IAMを列挙するための十分な権限がない場合、ブルートフォースで盗むことでそれを把握できます。
列挙とブルートフォースの方法については、以下を確認してください:
GCP - IAM, Principals & Org Policies Enum
note
現在、あなたの資格情報に関する情報を持っている(そして、もしあなたがレッドチームであれば、検出されていないことを願っています)。環境で使用されているサービスを特定する時が来ました。
次のセクションでは、一般的なサービスを列挙する方法をいくつか確認できます。
Services Enumeration
GCPには驚くべき数のサービスがあります。次のページでは、基本情報、列挙のチートシート、検出を回避する方法、持続性を得る方法、その他のポストエクスプロイトのトリックについての情報を見つけることができます:
すべての作業を手動で行う必要はないことに注意してください。この投稿の下部には、自動ツールに関するセクションがあります。
さらに、この段階で認証されていないユーザーに公開されているサービスを発見するかもしれません。それらを悪用できるかもしれません:
GCP - Unauthenticated Enum & Access
Privilege Escalation, Post Exploitation & Persistence
クラウドの資格情報を取得したり、クラウド内で実行されているサービスを侵害した後の最も一般的な方法は、侵害されたアカウントが持つ誤設定された権限を悪用することです。したがって、最初に行うべきことは、自分の権限を列挙することです。
さらに、この列挙中に、権限は「組織」の最高レベルで設定できることを忘れないでください。
Publicly Exposed Services
GCPサービスを列挙しているときに、いくつかのサービスがインターネットに要素を公開しているのを見つけたかもしれません(VM/コンテナのポート、データベースやキューサービス、スナップショットやバケットなど)。
ペンテスター/レッドチームとして、機密情報や脆弱性を見つけられるかどうかを常に確認すべきです。これにより、AWSアカウントへのさらなるアクセスを得ることができるかもしれません。
この本では、公開されたGCPサービスを見つける方法とそれを確認する方法に関する情報を見つけることができるはずです。公開されたネットワークサービスの脆弱性を見つける方法については、特定のサービスを以下で検索することをお勧めします:
GCP <--> Workspace Pivoting
一つのプラットフォームでのプリンシパルの侵害は、攻撃者が他のプラットフォームを侵害することを可能にするかもしれません。以下を確認してください:
Automatic Tools
- GCloudコンソールで、https://console.cloud.google.com/iam-admin/asset-inventory/dashboardにアクセスすると、プロジェクトで使用されているリソースとIAMを確認できます。
- このAPIでサポートされている資産を確認できます:https://cloud.google.com/asset-inventory/docs/supported-asset-types
- 複数のクラウドで使用できるツールを確認してください。
- gcp_scanner:これはGCPリソーススキャナーで、特定の資格情報がGCP上でどのレベルのアクセスを持っているかを判断するのに役立ちます。
# Install
git clone https://github.com/google/gcp_scanner.git
cd gcp_scanner
virtualenv -p python3 venv
source venv/bin/activate
pip install -r requirements.txt
# Execute with gcloud creds
python3 __main__.py -o /tmp/output/ -g "$HOME/.config/gcloud"
- gcp_enum: gcloud cliを使用してGCP環境を列挙し、結果をファイルに保存するBashスクリプト。
- GCP-IAM-Privilege-Escalation: 高いIAM権限を列挙し、それを悪用してGCPで権限を昇格させるスクリプト(列挙スクリプトを実行できませんでした)。
- BF My GCP Permissions: あなたの権限をブルートフォースするスクリプト。
gcloud config & debug
# Login so gcloud can use your credentials
gcloud auth login
gcloud config set project security-devbox
gcloud auth print-access-token
# Login so SDKs can use your user credentials
gcloud auth application-default login
gcloud auth application-default set-quota-project security-devbox
gcloud auth application-default print-access-token
# Update gcloud
gcloud components update
Capture gcloud, gsutil... network
gcloud
CLIでリクエストを表示するために、パラメータ **--log-http
**を使用できることを忘れないでください。ログがトークン値を隠さないようにするには、gcloud config set log_http_redact_token false
を使用します。
さらに、通信を傍受するには:
gcloud config set proxy/address 127.0.0.1
gcloud config set proxy/port 8080
gcloud config set proxy/type http
gcloud config set auth/disable_ssl_validation True
# If you don't want to completely disable ssl_validation use:
gcloud config set core/custom_ca_certs_file cert.pem
# Back to normal
gcloud config unset proxy/address
gcloud config unset proxy/port
gcloud config unset proxy/type
gcloud config unset auth/disable_ssl_validation
gcloud config unset core/custom_ca_certs_file
OAuthトークンのgcloudでの設定
メタデータエンドポイントから抽出されたサービスアカウントOAuthトークンを使用するためには、次のようにするだけです:
# Via env vars
export CLOUDSDK_AUTH_ACCESS_TOKEN=<token>
gcloud projects list
# Via setup
echo "<token>" > /some/path/to/token
gcloud config set auth/access_token_file /some/path/to/token
gcloud projects list
gcloud config unset auth/access_token_file
参考文献
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を提出してハッキングトリックを共有してください。