溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

WebLogic兩處任意文件上傳漏洞動(dòng)態(tài)分析是怎樣的

發(fā)布時(shí)間:2021-12-22 21:38:32 來源:億速云 閱讀:157 作者:柒染 欄目:安全技術(shù)

這篇文章將為大家詳細(xì)講解有關(guān)WebLogic兩處任意文件上傳漏洞動(dòng)態(tài)分析是怎樣的,文章內(nèi)容質(zhì)量較高,因此小編分享給大家做個(gè)參考,希望大家閱讀完這篇文章后對(duì)相關(guān)知識(shí)有一定的了解。

0x01 前言

CNCERT前幾天發(fā)公告稱發(fā)現(xiàn)Oracle公司出品的基于JavaEE結(jié)構(gòu)的中間件WebLogic產(chǎn)品存在一個(gè)遠(yuǎn)程上傳漏洞,并得到了廠商的確認(rèn),危害程度評(píng)分高達(dá)9.8分。鑒于廠商已進(jìn)行了安全修復(fù),筆者對(duì)該漏洞進(jìn)行了一次分析。

WebLogic管理端未授權(quán)的兩個(gè)頁(yè)面存在任意上傳getshell漏洞,可直接獲取權(quán)限。兩個(gè)頁(yè)面分別為/ws_utc/begin.do,/ws_utc/config.do;漏洞的影響范圍 Oracle WebLogic Server,版本10.3.6.0,12.1.3.0,12.2.1.2,12.2.1.3;相關(guān)鏈接:    http://www.oracle.com/technetwork/security-advisory/cpujul2018-4258247.html#AppendixFMW  , 下文筆者從這兩個(gè)文件入手來系統(tǒng)調(diào)試跟蹤找出漏洞產(chǎn)生的原理和位置。    

0x02 簡(jiǎn)介和原理

筆者首先訪問了一下 http://IP/ws_utc/config.do  并且將默認(rèn)的目錄WSTestPageWorkDir修改為 user_projects\domains\base_domain\tmp\sd\  如下圖:

WebLogic兩處任意文件上傳漏洞動(dòng)態(tài)分析是怎樣的工作臺(tái)設(shè)置一個(gè)新的目錄后,weblogic會(huì)將原來目錄下的子目錄和文件一起轉(zhuǎn)移到新設(shè)定的目錄下,但舊的目錄依然保留。因?yàn)椴皇侵攸c(diǎn),筆者對(duì)這塊的分析就此略過。筆者從攻擊者的維度簡(jiǎn)單的畫了一個(gè)草圖,最初攻擊者肯定需要配置工作目錄,因?yàn)槟J(rèn)的工作目錄在URL訪問的時(shí)候不可達(dá),然后攻擊者考慮是從config.do頁(yè)面上傳keystore文件還是從begin.do上傳,最終都是成功上傳小馬,只是小馬的訪問格式和路徑不盡相同。如下圖:

WebLogic兩處任意文件上傳漏洞動(dòng)態(tài)分析是怎樣的如果要從原理上徹底搞清楚weblogic漏洞產(chǎn)生的過程還需要看下圖,簡(jiǎn)單的描述一下,攻擊者開始攻擊后,Weblogic在服務(wù)端做了很多的判斷,如果設(shè)定了新的工作目錄,那么程序會(huì)自動(dòng)拷貝所有舊目錄下的子目錄和文件到新的設(shè)定目錄里,并且設(shè)定新的目錄作為工作目錄,如果攻擊者通過begin.do上傳的話,Weblogic在服務(wù)端會(huì)判斷有沒有upload目錄,如果不存在會(huì)自動(dòng)創(chuàng)建,再接著在upload目錄下創(chuàng)建Rs_Upload_格式化后的作為目錄名,緊接著獲取到import_file_name字段名作為后續(xù)的文件名拼接的一部分;如果通過config.do上傳的話就獲取GET請(qǐng)求中的timestamp參數(shù)作為后續(xù)webshell的文件名中的一部分,還是看下圖吧:    

WebLogic兩處任意文件上傳漏洞動(dòng)態(tài)分析是怎樣的

0x03 begin.do頁(yè)面上傳漏洞

首先在IDE里搭建好WebLogic環(huán)境,把應(yīng)用跑起來后點(diǎn)擊頁(yè)面右上方的文件夾按鈕,這里實(shí)現(xiàn)的是一個(gè)導(dǎo)入的功能    

選擇任意文件上傳,筆者選擇上傳jsp文件:

WebLogic兩處任意文件上傳漏洞動(dòng)態(tài)分析是怎樣的

抓取數(shù)據(jù)包可以看到其實(shí)真正存在上傳漏洞的地址是:

http://IP:7001/ws_utc/resources/ws/config/import?timestamp=1532403983779

因?yàn)槭锹┒磸?fù)現(xiàn)和分析,筆者一邊上傳的時(shí)候就一邊把數(shù)據(jù)包抓取下來,得到下圖的HTTP:

WebLogic兩處任意文件上傳漏洞動(dòng)態(tài)分析是怎樣的

這段沒什么可說的就是一個(gè)簡(jiǎn)單的上傳數(shù)據(jù)流,表單字段import_file_name是關(guān)鍵值,從產(chǎn)品防御的角度來看檢測(cè)它們也是關(guān)鍵的特征之一。

接下來就需要在IDE里動(dòng)態(tài)定位到漏洞的觸發(fā)點(diǎn),因?yàn)閣eblogic大多數(shù)漏洞都和T3協(xié)議有關(guān)聯(lián),根據(jù)之前分析過的weblogic漏洞定位的調(diào)試斷點(diǎn)是在com.bea.core.weblogic.rmi.client_4.0.0.0.jar包里,多次調(diào)試后一步步跳轉(zhuǎn)到了漏洞觸發(fā)的核心包 

WebLogic兩處任意文件上傳漏洞動(dòng)態(tài)分析是怎樣的

并且查到了對(duì)應(yīng)的觸發(fā)漏洞類名的位置: \com\oracle\webservices\testclient\ws\util\RSDataHelper.class

定位到的方法convertFormDataMultiPart,代碼如下:

WebLogic兩處任意文件上傳漏洞動(dòng)態(tài)分析是怎樣的

代碼中檢查了當(dāng)前工作目錄下是否存在upload目錄,如果沒有的話則創(chuàng)建,并且調(diào)用了cleanObsoleteFile方法強(qiáng)制遍歷了一次目錄中所有的文件,并且發(fā)現(xiàn)文件就刪除掉,調(diào)試過程如下圖 :

WebLogic兩處任意文件上傳漏洞動(dòng)態(tài)分析是怎樣的WebLogic兩處任意文件上傳漏洞動(dòng)態(tài)分析是怎樣的WebLogic兩處任意文件上傳漏洞動(dòng)態(tài)分析是怎樣的再創(chuàng)建了一個(gè)以字符串Rs_Upload_打頭的加格式化后的時(shí)間命名的目錄,并且作為上傳文件保存的目錄。    

WebLogic兩處任意文件上傳漏洞動(dòng)態(tài)分析是怎樣的接下來程序獲得了上傳的表單的form-data , 經(jīng)過循環(huán)遍歷獲取了所有的表單字段和對(duì)應(yīng)的value,數(shù)據(jù)做兩塊存儲(chǔ),一塊保存在kvMap集合中、獲取的附件通過saveAttacheFile方法保存到磁盤中,代碼如下:

WebLogic兩處任意文件上傳漏洞動(dòng)態(tài)分析是怎樣的

下圖紅圈處是拼接后的物理路徑名:

WebLogic兩處任意文件上傳漏洞動(dòng)態(tài)分析是怎樣的

接著追蹤調(diào)試到 execute方法,位于ImportTestCaseAction.class類中,實(shí)際的路徑是:\user_projects\domains\base_domain\servers\AdminServer\tmp\_WL_internal\com.oracle.webservices.wls.ws-testclient-app-wls_12.1.3\cmprq0\war\WEB-INF\lib\ws-testpage-impl.jar!\com\oracle\webservices\testclient\ws\action\ImportTestCaseAction.class

WebLogic兩處任意文件上傳漏洞動(dòng)態(tài)分析是怎樣的由于筆者導(dǎo)入的文件格式以及數(shù)據(jù)并非weblogic能處理的,所以程序在context.createUnmarshaller方法處拋出空指針異常的錯(cuò)誤,這就導(dǎo)致了上傳成功后Response的狀態(tài)碼是500,這也可以作為防御產(chǎn)品檢測(cè)的特征之一。動(dòng)態(tài)調(diào)試異常如下圖:

WebLogic兩處任意文件上傳漏洞動(dòng)態(tài)分析是怎樣的到此begin.do頁(yè)面未授權(quán)訪問引起的任意文件上傳漏洞已經(jīng)很明朗,防御的策略可以檢測(cè)表單字段

WebLogic兩處任意文件上傳漏洞動(dòng)態(tài)分析是怎樣的

0x04 config.do頁(yè)面上傳漏洞

訪問 http://IP:7001/ws_utc/config.do 頁(yè)面后點(diǎn)擊左側(cè)的“安全”菜單,添加一個(gè)Keystore,任意設(shè)置名字和密碼,當(dāng)然文件也是任意格式上傳,這里真的很隨意。

WebLogic兩處任意文件上傳漏洞動(dòng)態(tài)分析是怎樣的點(diǎn)擊提交后,抓取觸發(fā)地址: http://IP/ws_utc/resources/setting/keystore?timestamp=1532400069848     ; 抓取的包如下        

WebLogic兩處任意文件上傳漏洞動(dòng)態(tài)分析是怎樣的和之前的套路一樣,上傳的時(shí)候就已經(jīng)打開了IDE調(diào)試功能,斷點(diǎn)后還是定位到RSDataHelper.class 文件,如下圖

WebLogic兩處任意文件上傳漏洞動(dòng)態(tài)分析是怎樣的這次獲取的表單字段是ks_filename,值得收藏,加入特征檢測(cè)范疇內(nèi);再跟進(jìn)看下關(guān)鍵的shell生成那一步

WebLogic兩處任意文件上傳漏洞動(dòng)態(tài)分析是怎樣的上傳后的shell位于工作臺(tái)配置的目錄下的/config/keystore/目錄中,文件名的格式相對(duì)來說簡(jiǎn)單,采用了POST請(qǐng)求中URL地址上攜帶的參數(shù)timestamp的值加上下劃線拼接起來的文件名,讓筆者大跌眼鏡的是weblogic作為知名軟件提供商存在這樣低級(jí)的漏洞實(shí)在匪夷所思,再加上其一系列的反序列化繞過漏洞,只能說weblogic的產(chǎn)品能不用就不用,實(shí)在不行少用為妙。

0x05 防御措施

1.設(shè)置Config.do、begin.do頁(yè)面登錄授權(quán)后訪問;

2.IPS等防御產(chǎn)品可以加入相應(yīng)的特征;

3.升級(jí)到官方最新版本。

關(guān)于WebLogic兩處任意文件上傳漏洞動(dòng)態(tài)分析是怎樣的就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,可以學(xué)到更多知識(shí)。如果覺得文章不錯(cuò),可以把它分享出去讓更多的人看到。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI