當前位置:
首頁 > 新聞 > 看我如何在Weblogic里撿一個XXE(CVE-2018-3246)

看我如何在Weblogic里撿一個XXE(CVE-2018-3246)

*本文作者:黑客小平哥,本文屬 FreeBuf 原創獎勵計劃,未經許可禁止轉載。


前言


前幾天空間被CVE-2018-2894刷屏,大家也都在研究和復現這個漏洞,正好我們安全團隊也在玩這個漏洞,那大家就一起來玩咯。 本次的重點是復現,上傳webshell,環境是內部一個測試環境,當我使用其中一個上傳頁面的時候,腦子突然熱了一下,把文件後綴改成了.xml,結果就很6了。

地址如下:http://127.0.0.1:8338/ws_utc/begin.do。


分析




突然看到了什麼,報錯了,但是錯誤代碼里有個「Internal Exception: org.xml.sax.SAXParseException」,這裡竟然解析xml文件,這裡說明一下,雖然這裡是上傳webshell的地方,xml文件貌似沒什麼用,但是當漏洞任意文件上傳漏洞修復之後,這個xml文件是不會禁止的,這裡既然解析了xml文件,說明這xml文件屬於正常文件。


此處當然要傳個payload試下了讀下etc/passwd,發現還是報錯,無法讀取:



這就完了?當然不是,既然無法讀取回顯,那就換個payload反彈下shell試試:



設置本地監聽:


返回包發現執行了payload代碼,並且讀取到伺服器etc/passwd文件:



至此,該漏洞已經確定存在,並將及時報告給官方了,2018年10月16日,該漏洞已經在oracle發布。


漏洞簡要分析:


根據路徑,漏洞定位到ws-testpage-impl.jar文件里的「importWsTestConfig」方法:



代碼如下:



可以發現,此處使用的方法為「ImportTestCaseAction」,進去看下該方法:



代碼如下:





Unmarshaller介面是將XML數據轉化為Java對象,此處是Unmarshaller使用不當,造成XXE,值得注意的是,經過和同事的不懈嘗試,發現jdk8默認禁止外部DTD的,jdk6和jdk7是可以的,而weblogic默認的jdk是存在該問題的(詳細版本範圍有待進一步考證)。


Demo介紹:


此處jdk為1.8,無法實現XXE:


此處jdk為1.6,即可執行:



本次研究結束,歡迎大佬繼續研究並指正。


*本文作者:黑客小平哥,本文屬 FreeBuf 原創獎勵計劃,未經許可禁止轉載。


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 FreeBuf 的精彩文章:

子彈簡訊跑太快,隱私泄露涉黃,誰之過
看我如何發現雅虎郵箱APP的存儲型XSS漏洞

TAG:FreeBuf |