CVE-2022-25167 Apache Flume JNDI 注入漏洞分析与复现

VSole2022-06-26 08:22:55

漏洞信息

Apache Flume 是一种分布式、可靠且可用的服务,用于高效收集、聚合和移动大量日志数据。近日监测到 Apache 发布安全的公告,修复了一个存在于 Apache Flume 中的代码执行漏洞。漏洞公告如下:

该漏洞是由于在 `JMSSource` 类中能够配置不安全的 `connectionFactoryName` ,导致攻击者可通过发送特制的 JNDI 查找,从而在目标系统上执行任意代码。

漏洞分析

首先进行补丁对比:


从补丁来看,在 `JMSSource#doConfigure` 函数中主要增加了对来自于 `JMSSourceConfiguration.CONNECTION_FACTORY` 的 `connectionFactoryName` 变量的检查。同时从官方给出的测试程序 `TestJMSSource.java` 可以看出 JNDI 注入的构造(新增 `testConfigureWithConnectionFactory` 函数):

回到 v1.9.0 版本的 `JMSSource#doConfigure` 函数:

在第 179 行获取 `connectionFactoryName` 字符串之后,一直往下走,第 265 行将其传入 `initialContext#lookup` 函数:

从而导致 JNDI 注入漏洞。

漏洞复现

jndiflume
本作品采用《CC 协议》,转载必须注明作者和本文链接
近日监测到 Apache 发布安全的公告,修复了一个存在于 Apache Flume 中的代码执行漏洞CVE-2022-25167,攻击者可通过发送特制的 JNDI 查找,从而在目标系统上执行任意代码。
国家互联网信息办对《网络数据安全管理条例》公开征求意见。
本文作者Betta,首发于火线Zone安全社区。
Java命名和目录接口是Java编程语言中接口的名称( JNDI )。它是一个API(应用程序接口),与服务器一起工作,为开发人员提供了查找和访问各种命名和目录服务的通用、统一的接口。 可以使用命名约定从数据库获取文件。JNDI为Java⽤户提供了使⽤Java编码语⾔在Java中搜索对象的⼯具。 简单来说呢,JNDI相当与是Java里面的一个api,它可以通过命名来查找数据和对象。
注入工具代码结构
JNDI漏洞利用探索
2022-01-23 19:33:23
最近学习了浅蓝师傅寻找的一些JNDI漏洞的利用链受益匪浅,自己也尝试关于JNDI漏洞利用做一些挖掘,目前JN
Apache Log4j2是一款优秀的Java日志框架,最近爆出了一个jndi注入的漏洞,影响面非常广,各大厂商都被波及。Log4j2作为日志记录的第三方库,被广泛得到使用,这次主要分享一下,最近的一些调试记录。
Apache Kafka是一个开源的分布式事件流平台,被数千家公司用于高性能数据管道、流分析、数据集成和任务关键型应用程序。
0x01 前言学习一下 WebLogic JNDI 注入 RCE0x02 环境搭建和之前 WebLogic 的环境搭建是一致的,本文不再赘述。到依赖里面0x03 漏洞分析与复现漏洞影响版本与前提条件Oracle WebLogic Server 10.3.6.0.0, 12.1.3.0.0, 12.2.1.3.0, 12.2.1.4.0, 14.1.1.0.0。页面的用户权限,或者存在 CVE-2020-14883 未授权访问漏洞。类,从而造成 RCE。中存在 JNDI Binding 操作的处理容器,如图具体的处理逻辑在?方法,疑似存在 jndi 注入的漏洞。观察需要如何构造恶意 payload,c 是由?的逻辑并不复杂,最终会调用 JndiBindingHandle 的构造函数。如图,我们在 payload 当中的这一段被放进了构造函的?
VSole
网络安全专家