网络安全漏洞分析之远程代码执行

AI权益加码!Claude Code、Cursor等20+工具免费用! 购周边限时加赠Coding Plan Lite,畅享主流AI工具!学习进阶更高效! 阅读详情

介绍

Apache Flume 是一个分布式的,可靠的,并且可用于高效地收集,汇总和移动大量日志数据的软件。它具有基于流数据流的简单而灵活的体系结构。它具有可调的可靠性机制以及许多故障转移和恢复机制,并且具有健壮性和容错性。它使用一个简单的可扩展数据模型,该模型允许进行在线分析应用程序。

漏洞描述

在 7 月 22 日,Apache 发布安全公告,修复了一个存在于 Apache Flume 中的远程代码执行漏洞,CVE 编号为 CVE-2022-34916。当攻击者控制目标 LDAP 服务器时,如果配置使用带有 JNDI LDAP 数据源 URI 的 JMS 源,Apache Flume 版本 1.4.0 到 1.10.0 很容易受到远程代码执行 (RCE) 攻击。

利用范围

1.4.0 <= Apache Flume <= 1.10.0

漏洞分析

环境搭建

从 GitHub 上下载 1.10.0 版本,导入 IDEA。

项目 jdk 使用 1.8,然后修改 TestIntegrationActiveMQ 测试类中的 DESTINATION_NAME,因为 destinationName 是由 DESTINATION_NAME 定义;修改 JNDI_PREFIX 为 ldap://

在 JMSMessageConsumerTestBase.java 中将 destinationLocator = JMSDestinationLocator.CDI;修改为 destinationLocator = JMSDestinationLocator.JNDI;

最后运行 TestIntegrationActiveMQ 测试类即可。

漏洞原理

根据 Apache Flume 漏洞描述,可以确定问题是出现在了 JMSMessageConsumer 中。

查看 DIff(https://github.com/apache/flume/commit/7fe9af49)记录发现,修复方式是在 JMSMessageConsumer 中的 else 分支下,在 initialContext.lookup(destinationName)前新增了对 destinationName 的校验。

那么漏洞触发点已经很明确了,在没有增加校验前,只要进入 JMSMessageConsumer 中 else 分支,控制 destinationName 参数,即可实现 JNDI 注入。

代码分析

知道了漏洞原理后,分析一下代码。

首先在 TestJMSMessageConsumer#testCreateDurableSubscription 初始化了 JMSMessageConsumer 并传入 destinationLocator

destinationLocator 的定义是在 JMSMessageConsumerTestBase.java 中。

在搭建环境时,我们是将 destinationLocator = JMSDestinationLocator.CDI;修改为了 destinationLocator = JMSDestinationLocator.JNDI;

这样配置,是为了在 JMSMessageConsumer 中不满足 if 条件后,能够进入到 else,到达漏洞触发点。

而在官方提供的测试类中,TestIntegrationActiveMQ 类存在 testQueueLocatedWithJndi,将作为 source 点传入参数。

修改 DESTINATION_NAME 为恶意 JNDI 地址,将 JNDI_PREFIX 修改为 ldap://

通过参数的传入,经过如上分析的流程,到达 else 后,由于没有校验,直接触发 initialContext.lookup,造成 JNDI 注入,从而执行恶意远程代码。

漏洞复现

修复建议

官方已发布安全版本,请尽快更新至安全版本

1️⃣零基础入门

① 学习路线

对于从来没有接触过网络安全的同学,我们帮你准备了详细的学习成长路线图。可以说是最科学最系统的学习路线,大家跟着这个大的方向学习准没问题。

img

② 路线对应学习视频

同时每个成长路线对应的板块都有配套的视频提供:

img

因篇幅有限,仅展示部分资料

2️⃣视频配套资料&国内外网安书籍、文档

① 文档和书籍资料

img

② 黑客技术

img

因篇幅有限,仅展示部分资料

3️⃣网络安全源码合集+工具包

img

4️⃣网络安全面试题

面试题

资料领取

上述这份完整版的网络安全学习资料已经上传网盘,朋友们如果需要可以微信扫描下方二维码 即可免费领取↓↓↓
或者

点此链接】领取

网络安全远程代码执行漏洞分析 在 HtmlUnit 3.0.0 及之前的版本中,由于 XSLTProcessor 类中的 XSL 转换未对外部扩展库进行限制,因此容易受到 XSLT 注入攻击。攻击者可以通过页面的 JavaScript 代码加载包含恶意命令的 XSL 文件,当用户访问包含这些恶意构造的页面时,就会远程执行这些恶意命令。以上代码可以进行XSLT,但是这段代码也会导致漏洞,当XSL可控的时候就可能会出现任意命令执行漏洞。再执行下一步,打开计算器的命令执行,漏洞复现成功,所以真正有问题的代码就是这几行,修复加入。 阅读详情

相关推荐

远程代码执行漏洞及防御

远程命令/代码执行漏洞(RC(command/code)E):RCE漏洞,可以让攻击者直接向后台服务器远程注入操作系统命令或者代码,从而控制后台系统;

慕舟舟的博客 2538

远程 命令/代码 执行(remote command/code execute)漏洞总结

这周来学习下命令执行漏洞;命令执行漏洞是用户通过浏览器在远程服务器上执行任意系统命令,与代码执行漏洞没有太大的区别,不过我们在学习时还是要区分不同的概念。关于代码执行漏洞会在下篇博客中详述。 一、什么是命令执行漏洞: 应用有时需要调用一些执行系统命令的函数,如PHP中的system、exec、shell_exec、passthru、popen、proc_popen等,当用户能控制这些函数中的参数时...

未完成的歌~的博客 9445

网络安全-渗透测试-RCE远程代码执行漏洞(1)-命令执行、代码执行

RCE(Remote Code Execution)远程代码执行漏洞(有时也叫命令执行漏洞)是一种安全漏洞,攻击者可以利用它来执行远程代码,从而控制受影响的系统。这种漏洞通常出现在应用程序或软件中,攻击者可以通过输入恶意构造的指令或数据,使得应用程序或软件在执行时执行攻击者指定的代码。RCE的范围比较广,只要渗透的最终结果可以实现执行命令或者代码都属于RCE,例如代码执行、文件包含、反序列化、命令执行,甚至是写文件Getshell都可以属于RCE,通常情况下RCE漏洞都可以归为高危漏洞

weixin_52796034的博客 5190

远程代码执行漏洞利用与防御

远程代码/命令执行(Remote Code/Command Execute),由于程序中预留了执行代码或命令的接口,并提供了给用户使用的界面,导致被利用控制服务器。

qq_45455136的博客 1216

远程命令执行漏洞原理,以及防护绕过方式

今天分享了远程执行指令的原理和如何进行远程执行指令漏洞的利用和绕过方法,远程命令执行的漏洞危害性特别大,攻击者可以利用远程命令执行漏洞给运营团队带来如下一些危害:继承Web服务程序的权限去执行系统命令或读写文件、反弹shell、控制整个网站甚至服务器、进一步内网渗透。在防御的过程我们可以通过加强对用户输入的验证:比如限制输入内容,其次,采用最小权限原则,将程序运行权限限制在最低限度。

Scalzdp的专栏 3066

网络安全网络安全漏洞分析远程代码执行

Apache Flume 是一个分布式的,可靠的,并且可用于高效地收集,汇总和移动大量日志数据的软件。它具有基于流数据流的简单而灵活的体系结构。它具有可调的可靠性机制以及许多故障转移和恢复机制,并且具有健壮性和容错性。它使用一个简单的可扩展数据模型,该模型允许进行在线分析应用程序。

A1_3_9_7的博客 1101
上一篇: 最全自学黑客技术学习路线,少走弯路
下一篇: 网警教学(非常详细)零基础入门到精通,收藏这一篇就够了
黑客老许
博客等级 码龄8年 5967粉丝 1034原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值