log4j 漏洞CVE-2021-44228 漏洞复现

本文介绍了Apache Log4j的安全漏洞,包括CVE-2017-5645、CVE-2019-17571和重点讲解了CVE-2021-44228的细节,这是一个远程代码执行漏洞。通过JNDI注入,攻击者可执行任意代码。文章还提供了漏洞复现的步骤,包括创建Maven项目、添加依赖、编写日志类及payload,以及利用marshalsec开启JNDI服务器和web服务。
摘要由CSDN通过智能技术生成


前言

Apache Log4j 远程代码执行漏洞,正是由于组件存在 Java JNDI 注入漏洞:当程序将用户输入的数据记入日志时,攻击者通过构造特殊请求,来触发 Apache Log4j2 中的远程代码执行漏洞,从而利用此漏洞在目标服务器上执行任意代码。。

一、Log4j 是什么?

官网:https://logging.apache.org/log4j/2.x/
Log4j 是Apache 的一个开源项目,是一款基于Java 的开源日志记录工具。通过使用Log4j,我们可以控制日志信息输送的目的地是控制台、文件、GUI 组件,甚至是套接口服务器、NT 的事件记录器、UNIX Syslog 守护进程等;我们也可以控制每一条日志的输出格式;通过定义每一条日志信息的级别,我们能够更加细致地控制日志的生成过程。最令人感兴趣的就是,这些可以通过一个配置文件来灵活地进行配置,而不需要修改应用的代码。

二、Log4j 有什么漏洞

1.CVE-2017-5645漏洞

攻击者发送一个特别制作的2 进制payload,在组件将字节反序列化为对象时,触发并执行构造的payload 代码。该漏洞是由于在处ObjectInputStream 时,接收函数对于不可靠来源的input 没有过滤。因此,通TcpSocketServer 和UdpSocketServer 添加可配置的过滤功能以及一些相关设置,可以有效的解决该漏洞。Apache Log4j 2.8.2 之前的2.x 版本中存在该反序列化漏洞

2.CVE-2019-17571漏洞

Log4j 1.2 版本中包含一个SocketServer 类,在未经验证的情况下,该SocketServe 类很容易接受序列化的日志事件并对其进行反序列化,在结合反序列化工具使用时,可以利用该类远程执行任意代码。

3、CVE-2021-44228 漏洞

2.15.0 之前的Log4j 版本存在通过ldap JNDI 解析器的远程代码执行漏洞。
https://github.com/advisories/GHSA-jfh8-c2jp-5v3q
在这里插入图片描述
详细信息:
Apache Log4j2 <=2.14.1 在配置、日志消息和参数中使用的JNDI 功能不能防止攻击者控
制的LDAP 和其他JNDI 相关端点。当启用消息查找替换时,可以控制日志消息或日志消息
参数的攻击者可以执行从LDAP 服务器加载的任意代码。从log4j 2.15.0 开始,默认情况
下已禁用此行为。在以前的版本(>2.10) 中, 可以通过将系统属性
“log4j2.formatMsgNoLookups”设置为“true”或从类路径中删除JndiLookup 类来缓解
这种行为( 例如: zip -q -d log4j-core-*.jar org
/apache/logging/log4j/core/lookup/JndiLookup.class ) 。Java 8u121 ( 参见
https://www.oracle.com/java/technologies/javase/8u121-relnotes.html ) 通过默认
“com.sun.jndi.rmi.object.

CVE-2021-44228漏洞 复现

第一步:使用idea 创建maven 项目

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值