0x00 前言本文將要介紹WebLogic版本探測的兩種方法,通過Python實現自動化,記錄開發細節,開源代碼。
0x01 簡介本文將要介紹以下內容:
實現思路
實現細節
開源代碼
0x02 實現思路探測WebLogic版本的方法有以下兩種:
1.通過Web頁面WebLogic Admin Console默認配置下的URL:http://
在返回結果中能夠獲得WebLogic的版本
這裡需要注意以下問題:
(1)需要區別早期版本
早期版本的返回結果示例:
目前常用版本的返回結果示例:
WebLogic Server Version: 14.1.1.0.0
(2)WebLogic Admin Console對應的路徑和端口可被修改
WebLogic Admin Console可被關閉,也可修改URL,修改方法有以下兩種:
通過瀏覽器訪問WebLogic Admin Console,在Configuration-General-Advanced設置,如下圖
通過配置文件設置,默認路徑:Oracle_Home\user_projects\domains\base_domain\config\config.xml,內容如下:
(3)關閉WebLogic Admin Console的情況
如果關閉了WebLogic Admin Console,訪問URL:http://
2.通過T3協議可以使用nmap的腳本weblogic-t3-info.nse,命令示例:
返回結果示例:
在原理上是通過建立socket連接,在返回結果中獲得WebLogic的版本
這裡需要注意以下問題:
(1)需要區別早期版本
早期版本的返回結果示例:t3 10.3.6.0\nAS:2048\nHL:19\n\n
目前常用版本的返回結果示例:HELO:12.2.1.3.0.false\nAS:2048\nHL:19\nMS:10000000\nPN:DOMAIN\n\n
(2)存在需要多次發送的情況
存在特殊情況,返回內容為HELO,此時需要重新發送直到返回完整的版本信息
(3)T3協議可被關閉
關閉方法有以下兩種:
通過瀏覽器訪問WebLogic Admin Console,在Security-Filter設置,配置如下:
Connection Filter設置為weblogic.security.net.ConnectionFilterImpl
Connection Filter Rules設置為:
如下圖
通通過配置文件設置,默認路徑:Oracle_Home\user_projects\domains\base_domain\config\config.xml,內容如下:
0x03 實現細節綜合以上探測方法,為了適應多種環境,在程序實現上選取了通過HTTP協議和T3協議兩種方法實現
1.通過HTTP協議選擇默認配置下的URL:http://
需要注意以下問題:
(1)第一次訪問時存在一次跳轉
首次啟動WebLogic時,在訪問默認配置下的URL:http://
在返回內容中以字符串Deploying application作為判斷依據
(2)需要區別早期版本
早期版本的返回結果示例:
目前常用版本的返回結果示例:
WebLogic Server Version: 14.1.1.0.0
在腳本實現上優先判斷常用版本,使用正則匹配,如果失敗,再從固定格式
(3)關閉WebLogic Admin Console的識別
如果關閉了WebLogic Admin Console,訪問URL:http://
完整示例代碼如下:
2.通過T3協議發送的socket數據內容為:t3 12.1.2\nAS:2048\nHL:19\n\n
需要注意以下問題:
(1)需要區別早期版本
早期版本的返回結果示例:t3 10.3.6.0\nAS:2048\nHL:19\n\n
目前常用版本的返回結果示例:HELO:12.2.1.3.0.false\nAS:2048\nHL:19\nMS:10000000\nPN:DOMAIN\n\n
為了提高準確性,這裡使用正則提取版本信息,示例代碼:
(2)存在需要多次發送的情況
存在特殊情況,返回內容為HELO,此時需要重新發送直到返回正確的版本信息
在重新發送的過程中,應關閉整個socket連接,重新初始化發送數據
(3)T3協議可被關閉
如果關閉了T3協議,返回內容示例:
完整示例代碼如下:
0x04 開源代碼完整的實現代碼已上傳至github,地址如下:
https://github.com/3gstudent/Homework-of-Python/blob/master/WebLogic_GetVersion.py
代碼使用HTTP協議和T3協議探測版本信息
0x05 小結本文介紹了WebLogic版本探測的兩種方法,比較優缺點,選取有效的方法並通過Python實現自動化,記錄開發細節,開源代碼,作為一個很好的學習示例。