CVE-2022-34916 Apache Flume 远程代码执行漏洞分析

news2024/11/23 12:25:21

项目介绍

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、网络安全理论知识(2天)
①了解行业相关背景,前景,确定发展方向。
②学习网络安全相关法律法规。
③网络安全运营的概念。
④等保简介、等保规定、流程和规范。(非常重要)

2、渗透测试基础(一周)
①渗透测试的流程、分类、标准
②信息收集技术:主动/被动信息搜集、Nmap工具、Google Hacking
③漏洞扫描、漏洞利用、原理,利用方法、工具(MSF)、绕过IDS和反病毒侦察
④主机攻防演练:MS17-010、MS08-067、MS10-046、MS12-20等

3、操作系统基础(一周)
①Windows系统常见功能和命令
②Kali Linux系统常见功能和命令
③操作系统安全(系统入侵排查/系统加固基础)

4、计算机网络基础(一周)
①计算机网络基础、协议和架构
②网络通信原理、OSI模型、数据转发流程
③常见协议解析(HTTP、TCP/IP、ARP等)
④网络攻击技术与网络安全防御技术
⑤Web漏洞原理与防御:主动/被动攻击、DDOS攻击、CVE漏洞复现

5、数据库基础操作(2天)
①数据库基础
②SQL语言基础
③数据库安全加固

6、Web渗透(1周)
①HTML、CSS和JavaScript简介
②OWASP Top10
③Web漏洞扫描工具
④Web渗透工具:Nmap、BurpSuite、SQLMap、其他(菜刀、漏扫等)

在这里插入图片描述

恭喜你,如果学到这里,你基本可以从事一份网络安全相关的工作,比如渗透测试、Web 渗透、安全服务、安全分析等岗位;如果等保模块学的好,还可以从事等保工程师。薪资区间6k-15k。

到此为止,大概1个月的时间。你已经成为了一名“脚本小子”。那么你还想往下探索吗?

想要入坑黑客&网络安全的朋友,给大家准备了一份:282G全网最全的网络安全资料包免费领取!
扫下方二维码,免费领取

有了这些基础,如果你要深入学习,可以参考下方这个超详细学习路线图,按照这个路线学习,完全够支撑你成为一名优秀的中高级网络安全工程师:

高清学习路线图或XMIND文件(点击下载原文件)

还有一些学习中收集的视频、文档资源,有需要的可以自取:
每个成长路线对应板块的配套视频:


当然除了有配套的视频,同时也为大家整理了各种文档和书籍资料&工具,并且已经帮大家分好类了。

因篇幅有限,仅展示部分资料,需要的可以【扫下方二维码免费领取】

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/190582.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Spring/SpringBoot/SpringCloud面试题

SpringBoot和SpringMVC的区别 形式上&#xff1a;SpringBoot是一个自动化配置的工具&#xff1b;SpringMVC是一个web框架在搭建项目时&#xff1a;SpringMVC需要手动配置xml文件&#xff0c;同时需要配置Tomcat服务器。而SpringBoot采用约定大于配置的方式&#xff0c;进行自动…

【Linux系统】第五篇:Linux中编译器gcc/g++的使用

文章目录一、编译工具gcc/g二、程序编译的过程&#x1f384;预处理&#x1f384;编译&#x1f384;汇编&#x1f384;链接三、动态链接和静态链接&#x1f33b;动态链接&#x1f33b;静态链接&#x1f33b; 程序动、静态链接的区分一、编译工具gcc/g gcc/g 分别是 C/C 的编译器…

【wp】hgame2023 week3 RePwn

【wp】hgame2023 week3 Re&&Pwn Re cpp那个chacha20加密不会。 kunmusic 用dnspy逆dll&#xff0c;在Program的Main方法中找到了初始化的数据 下断点执行&#xff0c;拷贝出data 写一份脚本进行data与104的异或 def step_one():with open("./data", enc…

发明专利申请流程资料

​发明专利申请流程 依据专利法&#xff0c;发明专利申请的审批程序分为&#xff1a; 1、受理阶段 2、初步审查阶段 3、公布阶段 4、实质审查阶段 5、授权阶段 发明专利申请所需资料 1、发明专利请求书。 2、说明书。 3、权利要求书。 4、说明书摘要。 5、有附图的可同时提交说…

Actionchains在selenium中的使用方法

今天分享一下selenium最常用的ActionChains的使用&#xff0c;以及碰到的一些问题的解决。 1.selenium解决鼠标悬停的问题 今天抓取某个平台的数据时发现有的数据需要鼠标悬停在上面才能加载出来&#xff0c;于是就想到了使用ActionChains解决悬停的问题&#xff0c;下面是思…

计算机组成原理 | 第九章:控制单元的功能 | 微操作命令 | 时钟周期

文章目录&#x1f4da;微操作命令的分析&#x1f407;取指周期&#x1f407;间址周期&#x1f407;执行周期&#x1f955;非访存指令&#x1f955;访存指令⭐️&#x1f955;转移指令&#x1f407;中断周期&#x1f4da;控制单元的功能&#x1f407;控制单元的外特性&#x1f9…

分享微信报名小程序怎么做_瑜伽健身房培训报名小程序开发介绍

活动报名收费签到小程序&#xff0c;支持个人免费组织报名收款和现场签到。随时随地管理活动、发布活动、查看收入明细提现资金更效率。 活动报名收费签到小程序主要功能有&#xff1a; 在线报名&#xff1a;通过二维码或链接分享活动入口&#xff0c;亦可轻松放进入公众号。 …

客户端通过SSH连接Linux服务器超时问题解决方法汇总

&#x1f41a;作者简介&#xff1a;花神庙码农&#xff08;专注于Linux、WLAN、TCP/IP、Python等技术方向&#xff09;&#x1f433;博客主页&#xff1a;花神庙码农 &#xff0c;地址&#xff1a;https://blog.csdn.net/qxhgd&#x1f310;系列专栏&#xff1a;善假于物&#…

Windows无法进入睡眠模式怎么办?

睡眠模式是电脑的一种低功耗模式&#xff0c;能减少耗电。当你要离开电脑一阵&#xff0c;但又不想关闭文档和程序&#xff0c;就可以选择让电脑暂时休眠。 如果你的电脑无法进入睡眠模式&#xff0c;可以尝试下面几种方法&#xff1a; 更换电源选项检查电源命令使用电源疑难…

开源机器学习软件对AI的发展意味着什么?

作者&#xff5c; Max Langenkamp OneFlow编译 翻译&#xff5c;徐佳渝、杨婷 为什么要关注机器学习开源软件&#xff08;MLOSS&#xff09;&#xff1f;在我们看来&#xff0c;MLOSS对AI发展来说举足轻重&#xff0c;但未获重视。 机器学习开源软件是开源许可下发布的专为机器…

“易”起涨知识|人人都在追捧的低代码开发,到底有什么优势?

低代码的根本价值在于&#xff1a;劳动力转移。运营、产品能 cover 部分开发工作&#xff0c;实现研发流左移&#xff0c;敏捷迭代。 劳动力转移只是表面&#xff0c;低代码价值还是归属于自动化了信息传递。 产品用文字和交互图&#xff08;PRD&#xff09;表达了一遍完整的产…

List、Set、Map的区别

List、Set、Map的区别 ​ &#xff08;图一&#xff09; 1.面试题&#xff1a;你说说collection里面有什么子类。 &#xff08;其实面试的时候听到这个问题的时候&#xff0c;你要知道&#xff0c;面试官是想考察List&#xff0c;Set&#xff09; 正如图一&#xff0c;lis…

一文深入分析arm64 cache机制

说明&#xff1a; Kernel版本&#xff1a;4.14ARM64处理器&#xff0c;Contex-A53&#xff0c;双核使用工具&#xff1a;Source Insight 3.5&#xff0c; Visio 1. 概述 先来看一下经典的存储器层次结构图&#xff1a; 不同存储器技术的访问时间差异很大&#xff0c;CPU和主存…

2023年深圳前端培训机构排名,评价较高的机构分享

深圳前端培训机构排行榜的前三名是哪家呢&#xff1f;不少学生在选择学习前端开发的时候&#xff0c;都会通过网络来找一些相关的排行&#xff0c;评判哪家机构的教学比较好&#xff0c;今天小编就来针对这类相关的培训为大家分享一些内容&#xff0c;帮助大家选择更适合自己的…

RabbitMQ面试知识点总结

1.消息模式 P2P Worker Pub/Sub(exchange 4种) 四种交换机&#xff1a;direct/topic/headers/fanout&#xff0c;默认交换机是direct&#xff0c;其中Publish/Subscribe&#xff0c;Routing&#xff0c;Topics三种模式可以统一归为Exchange模式&#xff0c;只是创建时交换机的…

【LeetCode每日一题】【2023/2/1】2325. 解密消息

文章目录2325. 解密消息方法1&#xff1a;哈希表2325. 解密消息 LeetCode: 2325. 解密消息 简单\color{#00AF9B}{简单}简单 给你字符串 key 和 message &#xff0c;分别表示一个加密密钥和一段加密消息。解密 message 的步骤如下&#xff1a; 使用 key 中 26 个英文小写字母第…

SpringBoot 监控统计(SQL监控、慢SQL记录、Spring监控、去广告)

1 基本概念Druid 是Java语言中最好的数据库连接池。虽然 HikariCP 的速度稍快&#xff0c;但是&#xff0c;Druid能够提供强大的监控和扩展功能 &#xff0c;也是阿里巴巴的开源项目。Druid是阿里巴巴开发的号称为监控而生的数据库连接池&#xff0c;在功能、性能、扩展性方面&…

算法---冗余连接

题目 树可以看成是一个连通且 无环 的 无向 图。 给定往一棵 n 个节点 (节点值 1&#xff5e;n) 的树中添加一条边后的图。添加的边的两个顶点包含在 1 到 n 中间&#xff0c;且这条附加的边不属于树中已存在的边。图的信息记录于长度为 n 的二维数组 edges &#xff0c;edge…

蓝桥杯2022 python C组

蓝桥杯2022 python C组 跟之前的就四题不一样 第二题&#xff1a;特殊时间 就是i 从0-9&#xff0c;j从0-9 i是三个一样的&#xff0c;然后看看他们能不能成为 年 月日 时分 成为年只要大于0就好了&#xff0c;称为月日的话月要从1-12&#xff0c;日呢&#xff0c;特殊的日子…

Kylin入门实战(数据源添加 + Model定义 + Cube构建 + 结果查询 + 查询限制)

目录1. 入门实战目的2. Hive源数据准备3. 创建project并添加Hive数据源4. 定义model5. 定义Cube6. 构建cube7. 查询cube构建后的结果8. 查询限制1. 入门实战目的 实现从不同的维度统计员工的工资&#xff0c;例如从岗位类型、员工年龄、部门等不同维度&#xff0c;进行多维度的…