简单的 Apache Airflow(CVE-2022-40127)漏洞复现
漏洞描述:
Apache Airflow 是一个可编程,调度和监控的工作流平台,基于有向无环图(DAG),Airflow 可以定义一组有依赖的任务,按照依赖依次执行。该漏洞影响版本Apache Airflow <2.4.0
;当攻击者可访问到 Apache Airflow 的后台,且环境中存在默认Example Dags
,则可构造恶意请求借助 run_id 执行任意命令。
准备环境:
一、环境搭建:
1、指定 air-flow 主目录:
2、air-flow 安装
![](https://static001.geekbang.org/infoq/0f/0f5bc4745c5fa401d23af26c255e92b3.png)
3、初始化
执行 airflow 进行初始化:
![](https://static001.geekbang.org/infoq/9b/9bdeb2503b4d1a61537b10dd8cfa2ff3.png)
①网络安全学习路线
②20 份渗透测试电子书
③安全攻防 357 页笔记
④50 份安全攻防面试指南
⑤安全红队渗透工具包
⑥网络安全必备书籍
⑦100 个漏洞实战案例
⑧安全大厂内部视频资源
⑨历年 CTF 夺旗赛题解析
3、配置文件修改:
(1)初始化后,会在 airflow 主目录生成 airflow.cfg 文件:
![](https://static001.geekbang.org/infoq/89/89c3080eecb58954f225cd91864d7a9e.png)
编辑两个地方:
(A)
![](https://static001.geekbang.org/infoq/51/513c118bdb356cddd58fae7a558d2cce.png)
(B)
![](https://static001.geekbang.org/infoq/6d/6d292e3a03f79bd56fb30817acedcea9.png)
(2)修改 mysql 配置文件 my.cnf,在[mysqld]中添加:
我直接用的宝塔,在配置里面已经存在:
![](https://static001.geekbang.org/infoq/48/481d3707b22c1f9b21368c6f27614ad1.png)
修改后重启 mysql
(3)添加一个名为 airflowdb 的数据库:
![](https://static001.geekbang.org/infoq/6f/6f83f173bc8f438a8ee24a9ede49defd.png)
<注意:数据库引擎建议为 innodb,否则会报错“Specified key was too long; max key length is 1000 bytes
”>
4、数据库初始化
在~/airflow 主目录执行:
![](https://static001.geekbang.org/infoq/59/59d4bf3defc9343eb04453c3fe8e665d.png)
<注:该处若未安装 mysqlclient,将会报错,
因为初始化会写入 mysql
mysqlclinet 安装:
执行:
![](https://static001.geekbang.org/infoq/86/86a0e3cd7699d0181ad4b6bd3bd7bbd8.png)
正常执行完毕后,会有“Initialization done”字样:
![](https://static001.geekbang.org/infoq/30/30a1c45a7c44194ea21ce219bf66cc1e.png)
5、配置
创建登录用户:
![](https://static001.geekbang.org/infoq/c9/c92ec358b2919b25144073148ecc8dfc.png)
最后將提示设置密码:
![](https://static001.geekbang.org/infoq/00/001c9b61b6c5b071ccb136b6e0bff578.png)
6、启动
(1)server
![](https://static001.geekbang.org/infoq/7b/7b14fccff5d196bb3a3a373547405af8.png)
(2)scheduler:
![](https://static001.geekbang.org/infoq/a1/a1a0358a4fd4bdd65fa3471e04e6b7de.png)
界面:
![](https://static001.geekbang.org/infoq/19/19582420b40f9930a2b2dac545b2d22c.png)
二、复现:
登录 airflow:
![](https://static001.geekbang.org/infoq/26/26f688ab1eb61688eb0dc01d1380fe8e.png)
设置 run_id
在“example_bash_operator”行,点击 action 项的三角符号,点击“Trigger DAG w/ config”:
![](https://static001.geekbang.org/infoq/61/612c104fdd7440cc9763bc51feb8b111.png)
进入配置,
![](https://static001.geekbang.org/infoq/0e/0e2e2c2666d59c496fd436501a256e1e.png)
在“run id”处输入 payload:
![](https://static001.geekbang.org/infoq/35/356007a4c3830d495d25d6f831937bb8.png)
dnslog 处查看结果:
![](https://static001.geekbang.org/infoq/83/830f6d1ccce2d5e6a6786dd3eabf2866.png)
漏洞修复:
官方已发布版本 2.4.3,可升级 Apache Airflow 版本到 2.4.0 或以上,或者停用默认 Dags。
评论