天天看點

第21篇:判斷Weblogic詳細版本号的方法總結

作者:希潭實驗室ABC123
第21篇:判斷Weblogic詳細版本号的方法總結

Part1 前言

在日常的滲透測試、紅隊評估項目中,中間件層面的漏洞挖掘是非常重要一環,Weblogic中間件在最近幾年接連被爆出很多高危漏洞,基本上都是可以直接拿到權限的。主流的Weblogic漏洞包括HTTP協定上的CVE-2017-10271、CVE-2019-2729等,但是其影響weblogic的版本為12.1.3之前版本。如果能事先判斷出weblogic的版本号是大于12.1.3的,那麼可以放棄測試這兩種漏洞,節省很多時間。

此外還有很多T3協定、IIOP協定下的各種Java反序列化漏洞,但是這些反序列化漏洞利用起來非常非常麻煩,尤其是最近幾年出現的漏洞很多都基于coherence元件,不同版本号的weblogic的coherence元件的SUID都不一樣,而漏洞利用成功的前提就是漏洞利用工具的SUID和目标weblogic環境的SUID必須一緻。

這就需要我們在滲透測試的時候,準确判斷出Weblogic版本号,以備找到合适版本号的coherence元件去進行Java反序列化攻擊。而且在得知weblogic版本号之後,不符合版本号的漏洞就不用測試了,這樣會節省很多時間。接下來就給大家分享一些在各種情況下判斷Weblogic細微版本号的方法。再次強調一下,依據ABC_123測試weblogic漏洞的經驗,在weblogic漏洞的探測與利用之前,需要想盡各種辦法去判斷weblogic細微版本号,這樣可以節省很多時間,也可以發最少量的資料包。因為weblogic各種漏洞非常多,非常繁雜,而且利用成功與否受weblogic版本影響特别大。

Part2 技術研究過程

  • Weblogic細微版本号對照表

既然要判斷Weblogic版本号,首先就要讓大家了解一下weblogic各版本号的命名規則。不得不說,Oracle公司的産品,在版本号的命名上、日志結構上一向弄得很複雜。

筆者曾經遇到這麼一個尴尬的事情,相信網友們也遇到過類似的情況。在一次滲透測試報告總結會中,有技術人員找到了一個Weblogic反序列化漏洞,但是他給出的修複建議是,把Weblogic 11g版本更新到12c版本。客戶那邊的接口人開會時就對此提出質疑和批評:我們公司部署的Weblogic中間件明明是10.3.6版本,是10版本的,你們給的修複建議居然是由11版本更新到12版本,我們沒有11版本的weblogic啊?

結果在場的項目經理和技術人員都被問懵了,被客戶質疑地啞口無言,楞是沒答出這個問題來,一緻認為修複建議給錯了,于是引起了一系列誤會。後來我發了如下這張圖,跟大家解釋了一下,其實客戶跟我們說的都沒錯,Weblogic 10.3.6版本跟11g版本其實是一回事,隻是命名規則不同。具體大家可以把下面這張圖仔細看幾遍,就自然明白了,我在這裡就不過多叙述了。

第21篇:判斷Weblogic詳細版本号的方法總結
  • 判斷是否使用了Weblogic

1 Weblogic指紋特征判斷

判斷一個網站應用是否使用了Weblogic中間件,可以通過查找指紋特征的方法去判斷。輸入一個不存在的URL路徑,看Web服務是否傳回如下“From RFC 2068Hypertext Transfer Protocol”關鍵字,即可判斷出是否使用Weblogic中間件來。

第21篇:判斷Weblogic詳細版本号的方法總結

使用Burpsuite發包傳回如下:

第21篇:判斷Weblogic詳細版本号的方法總結

2 Weblogic内置URL路徑判斷

對于有些網站屏蔽了404錯誤回顯的情況,可以通過通路Weblogic内置Web目錄是否存在去間接去判斷是否使用了Weblogic中間件。比如/consolehelp/、/bea_wls_internal/、/console/等路徑是Weblogic專有的,再比如說可以通路Weblogic專有的漏洞CVE-2017-10271、CVE-2019-2729等對應的URL路徑(/wls-wsat/、/_async/等),但是這個方法不推薦使用,因為基本上都會被WAF攔截,更嚴重的情況是會導緻封IP,導緻後續正常路徑也無法判斷出來,而且大多數甲方客戶修複漏洞的方法,就是直接删除存在漏洞的war包,導緻這兩個路徑也不存在。

第21篇:判斷Weblogic詳細版本号的方法總結
第21篇:判斷Weblogic詳細版本号的方法總結
第21篇:判斷Weblogic詳細版本号的方法總結
  • 判斷Weblogic詳細版本号方法

1 通路特定頁面可顯示版本号

通路/console/目錄,如果console目錄應用沒有删除,在頁面左下角會給出一個weblogic的詳細版本号。

第21篇:判斷Weblogic詳細版本号的方法總結
第21篇:判斷Weblogic詳細版本号的方法總結

2 通過T3協定擷取

通過T3協定可以直接擷取Weblogic版本号,缺點是現在Weblogic的T3直接暴露在公網上的情況很少了,很多時候在前面會放置一個nginx反向代理,這種情況下,T3識别版本号的方法就用不了了。

可以使用nmap去識别,具體指令如下:

nmap 192.168.237.235 -p 7130 --script="weblogic-t3-info.nse" -v -Pn -n -sV --open -T4

第21篇:判斷Weblogic詳細版本号的方法總結

也可以自己從github上下載下傳一個T3協定的發包代碼,自己修改一下,直接把T3協定的傳回包輸出,就直接可以看到版本号了。

第21篇:判斷Weblogic詳細版本号的方法總結

3 CVE-2022-21371檔案包含漏洞判斷

這個漏洞是2022年出現的漏洞,是一個檔案包含漏洞,通過這個漏洞可以跳轉目錄對Weblogic的/WEB-INF/xml、jsp、html檔案等進行檔案讀取。這也是被大家忽略的一個Nday漏洞,在這裡,我們可以用這個漏洞,間接判斷出weblogic的版本号。

思路是,fast_track.html這個檔案的顯示内容有個時間,每一個細微版本大緻對應着一個weblogic的細微版本号,用來做版本識别恰到好處。

通路.//fast_track.html,如下圖所示,對于Weblogic的12.2.1.3.0版本,此檔案回顯時間内容是1996,2017

第21篇:判斷Weblogic詳細版本号的方法總結

如下圖所示,對于Weblogic的12.1.3.0.0版本,此檔案回顯的時間内容是1996,2014

第21篇:判斷Weblogic詳細版本号的方法總結

4 通過傳回頭來判斷

很早之前從github上的一個腳本中複制出來放在我的筆記中的,忘記具體作者是誰了。這個方法我沒有具體驗證過,大家測試成功後,可以在微信公衆号背景給我發消息,告訴我準确度如何。

通過傳回頭判斷weblogic版本号:

def check_weblogic_by_header(headers):

status,msg = False,'may be not weblogic'

if 'X-Powered-By' in headers:

m = re.findall(r'Servlet/(.+)\s+JSP/(.+)',headers['X-Powered-By'])

if m :

Servlet,JSP = m[0]

if Servlet == '2.4' and JSP == '2.0':

status = True

msg = 'weblogic 9.x'

elif Servlet == '2.5' and JSP == '2.1':

status = True

msg = 'weblogic 10.x'

elif Servlet == '3.0' and JSP == '2.2':

status = True

msg = 'weblogicc 12.x'

return status,msg

Part3 總結

1. nday也是有價值的,看大家對漏洞的了解以及如何靈活運用。

2. 判斷weblogic版本号方法還有很多,上述方法是我比較常用的,也給大家拓展一下思路,還有很多其它方法後續再慢慢講。

第21篇:判斷Weblogic詳細版本号的方法總結

公衆号專注于網絡安全技術分享,包括APT事件分析、紅隊攻防、藍隊分析、滲透測試、代碼審計等,每周一篇,99%原創,敬請關注。

Contact me: 0day123abc#gmail.com(replace # with @)