GCP Pentesting
基本情報
GCP 環境をペンテストする前に、どのように機能するかを理解し、ミス構成を見つけて悪用する方法を理解するのに役立つ 基本事項 がいくつかあります。
組織の階層、権限などの概念については、以下で説明されています:
pageGCP - Basic Information学習用ラボ
GCP ペンテスター/レッドチームの方法論
GCP 環境を監査するためには、どのサービスが使用されているか、何が公開されているか、誰が何にアクセス権を持っているか、内部のGCPサービスと外部サービスがどのように接続されているかを知ることが非常に重要です。
レッドチームの視点から、GCP 環境を侵害する最初のステップは、いくつかの資格情報を取得することです。以下に、それを行うためのいくつかのアイデアがあります:
github(または類似の)での情報漏洩 - OSINT
ソーシャルエンジニアリング(Workspace Security ページを参照)
パスワード再利用(パスワード漏洩)
GCP ホストされたアプリケーションの脆弱性
サーバーサイドリクエストフォージェリ メタデータエンドポイントへのアクセス
ローカルファイル読み取り
/home/USERNAME/.config/gcloud/*
C:\Users\USERNAME\.config\gcloud\*
3者が侵害
内部従業員
または認証されていないサービスを侵害することで:
pageGCP - Unauthenticated Enum & Accessまたはレビューを行っている場合は、これらの役割で資格情報を要求するだけです:
pageGCP - Permissions for a Pentest資格情報を取得した後は、それらの資格情報が誰に属しているか、何にアクセス権を持っているかを知る必要があるため、いくつかの基本的な列挙を実行する必要があります:
基本列挙
SSRF
GCP メタデータを列挙する方法の詳細については、次の hacktricks ページを参照してください:
Whoami
GCP では、自分が誰かを推測するためにいくつかのオプションを試すことができます:
Principal & IAM Enumeration
十分な権限がある場合、GCPアカウント内の各エンティティの特権をチェックすることで、自分や他のアイデンティティが何ができるか、特権をエスカレートする方法を理解できます。
IAMを列挙する権限がない場合、ブルートフォース攻撃を行って特権を特定することができます。 列挙とブルートフォース攻撃の方法は以下で確認できます:
pageGCP - IAM, Principals & Org Policies Enum今、資格情報についての情報を持っている(もしレッドチームであれば、検出されていないことを願います)。環境で使用されているサービスを特定する時がきました。 以下のセクションでは、いくつかの一般的なサービスを列挙する方法を確認できます。
サービスの列挙
GCPには驚くほど多くのサービスがあり、以下のページでは、いくつかのサービスに関する基本情報、列挙のチートシート、検出を回避する方法、持続性を確保する方法、およびその他のポストエクスプロイテーショントリックが記載されています:
pageGCP - Servicesすべての作業を手動で行う必要はないことに注意してください。この投稿の下には、自動ツールに関するセクションがあります。
さらに、この段階では、認証されていないユーザーに公開されているサービスがさらに見つかる可能性があります。これらを悪用できるかもしれません:
pageGCP - Unauthenticated Enum & Access特権昇格、ポストエクスプロイテーション、持続性
クラウドの資格情報を入手したり、クラウド内で実行されているサービスを侵害したりした場合、侵害されたアカウントが持つ特権を悪用するのが最も一般的な方法です。したがって、まず特権を列挙する必要があります。
また、この列挙中に、権限は最上位の「組織」レベルで設定できることを覚えておいてください。
pageGCP - Privilege EscalationpageGCP - Post ExploitationpageGCP - Persistence公開されているサービス
GCPサービスを列挙する際に、それらの中にはインターネットに要素を公開しているものがあるかもしれません(VM/コンテナのポート、データベースやキューサービス、スナップショットやバケツなど)。 ペンテスター/レッドチームメンバーとしては、これらがAWSアカウントへのさらなるアクセスを提供する可能性があるため、それらに機密情報/脆弱性がないか常に確認する必要があります。
この書籍では、公開されているGCPサービスを見つける方法や確認方法についての情報が記載されています。公開されたネットワークサービスの脆弱性を見つける方法については、特定のサービスを検索することをお勧めします:
GCP <--> Workspace ピボティング
1つのプラットフォームでの主体の侵害は、攻撃者が他のプラットフォームを侵害することを可能にする場合があります。詳細は以下をご確認ください:
pageGCP <--> Workspace Pivoting自動ツール
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で特定の資格情報がどのようなアクセス権限を持っているかを判断するのに役立ちます。
gcp_enum: GCP環境を列挙するためのBashスクリプト。gcloud cliを使用して結果をファイルに保存します。
GCP-IAM-Privilege-Escalation: 高いIAM特権を列挙し、それを悪用してGCPで特権を昇格させるスクリプト(列挙スクリプトを実行できませんでした)。
gcloud設定とデバッグ
gcloud、gsutil...ネットワークのキャプチャ
gcloud
cliで**--log-http
** パラメータを使用して、ツールが実行しているリクエストを表示できることを覚えておいてください。ログがトークンの値を伏せるのを避けたい場合は、gcloud config set log_http_redact_token false
を使用してください。
さらに、通信を傍受するには:
gcloudでのOAuthトークンの設定
メタデータエンドポイントから流出したサービスアカウントのOAuthトークンを使用するには、次のようにします:
参考
最終更新