Part1前言
年前在一次攻防比賽過程中,遇到了一個9.x版本的weblogic中間件,是非常老版本的Weblogic了,現有的各種漏洞利用工具都沒能拿下權限,考慮到之前也曾經遇到過好幾次了,于是研究了一整天,總算解決了這個遺留的技術問題。
Part2解決問題過程
1安裝weblogic 9.x版本
首先安裝weblogic9.x版本,這個過程就不叙述了。
使用T3協定發包後,傳回weblogic版本号是9.2.0.0
接下來看一下weblogic目錄自帶的jdk版本,發現是1.5(幾乎是20年前的老版本了)。至此初步判斷工具利用失敗的原因是:反序列化利用工具的exp在JDK1.6以上版本編譯,進而不支援jdk 1.5環境,後續發現原因沒這麼簡單。
接下來看一下weblogic目錄下,存在哪些具有反序列化漏洞的jar包:
接下來改造一下老外的ysoserial代碼,使其在JDK1.5環境下編譯,結果遇到了好幾個坑。
第一個坑,idea在jdk1.5支援問題
使用Intellij Idea加載ysoserial的代碼,将JDK版本更改為1.5,發現idea新版本不支援jdk1.5環境,沒法調試代碼。
沒辦法,從idea的官網一頓搜尋,找到了一個老版本的idea 11,總算是能支援jdk1.5環境了。
idea11以jdk1.5導入ysoserial後,報一大堆錯誤,于是将幾個必備的依賴jar包替換成較低版本的,以備可以相容jdk1.5環境。
第2個坑,permit-reflect元件JDK1.5相容問題
按照前面的步驟替換完低版本jar包後,permit-reflect元件遇到了麻煩,我下載下傳了0.1到0.4版本都不支援JDK1.5。。。
後來找到了解決辦法:下載下傳permit-reflect的源碼,以JDK1.5環境導入,把報錯的代碼都給注釋掉,然後進行小規模代碼修複,将修複好的代碼直接放到ysoserial工程裡面,這下不報錯了。
第3個坑 CC鍊不适用于JDK1.5
weblogic低版本應該是存在CC鍊的反序列化漏洞的,本地嘗試了各種CC鍊,發現在JDK1.5下是沒法彈電腦的。
Jdk7u21最終解決問題
于是把目光放在Jdk7u21這個鍊上(先前以為Jdk7u21是不支援JDK1.5的),以JDK1.5環境導入,本地反序列化環境測試,發現是可以彈出電腦的!
接下來使用了之前從github上下載下傳的T3協定發包代碼,将上述生成的資料檔案發包出去。
發現weblogic9.x成功彈出電腦
Part3總結
- Jdk7u21利用鍊可用于JDK1.5,但是必須以JDK1.5環境編譯。
- Weblogic9.x預設依賴于JDK1.5。
- CC鍊貌似不能用于JDK1.5。
- permit-reflect元件改源碼,然後導入ysoserial中,因為官網的jar包版本不支援JDK1.5。
- ysoserial依賴包盡量選用最低版本的jar包,否則JDK1.5不支援。
網絡安全abc123
專注于紅隊、藍隊技術分享,每周一篇