新聞中心
這篇文章將為大家詳細(xì)講解有關(guān)WebLogic兩處任意文件上傳漏洞動態(tài)分析是怎樣的,文章內(nèi)容質(zhì)量較高,因此小編分享給大家做個參考,希望大家閱讀完這篇文章后對相關(guān)知識有一定的了解。
站在用戶的角度思考問題,與客戶深入溝通,找到成縣網(wǎng)站設(shè)計(jì)與成縣網(wǎng)站推廣的解決方案,憑借多年的經(jīng)驗(yàn),讓設(shè)計(jì)與互聯(lián)網(wǎng)技術(shù)結(jié)合,創(chuàng)造個性化、用戶體驗(yàn)好的作品,建站類型包括:成都網(wǎng)站設(shè)計(jì)、網(wǎng)站制作、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣、域名與空間、網(wǎng)站空間、企業(yè)郵箱。業(yè)務(wù)覆蓋成縣地區(qū)。
0x01 前言
CNCERT前幾天發(fā)公告稱發(fā)現(xiàn)Oracle公司出品的基于JavaEE結(jié)構(gòu)的中間件WebLogic產(chǎn)品存在一個遠(yuǎn)程上傳漏洞,并得到了廠商的確認(rèn),危害程度評分高達(dá)9.8分。鑒于廠商已進(jìn)行了安全修復(fù),筆者對該漏洞進(jìn)行了一次分析。
WebLogic管理端未授權(quán)的兩個頁面存在任意上傳getshell漏洞,可直接獲取權(quán)限。兩個頁面分別為/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 , 下文筆者從這兩個文件入手來系統(tǒng)調(diào)試跟蹤找出漏洞產(chǎn)生的原理和位置。
0x02 簡介和原理
筆者首先訪問了一下 http://IP/ws_utc/config.do 并且將默認(rèn)的目錄WSTestPageWorkDir修改為 user_projects\domains\base_domain\tmp\sd\ 如下圖:
工作臺設(shè)置一個新的目錄后,weblogic會將原來目錄下的子目錄和文件一起轉(zhuǎn)移到新設(shè)定的目錄下,但舊的目錄依然保留。因?yàn)椴皇侵攸c(diǎn),筆者對這塊的分析就此略過。筆者從攻擊者的維度簡單的畫了一個草圖,最初攻擊者肯定需要配置工作目錄,因?yàn)槟J(rèn)的工作目錄在URL訪問的時候不可達(dá),然后攻擊者考慮是從config.do頁面上傳keystore文件還是從begin.do上傳,最終都是成功上傳小馬,只是小馬的訪問格式和路徑不盡相同。如下圖:
如果要從原理上徹底搞清楚weblogic漏洞產(chǎn)生的過程還需要看下圖,簡單的描述一下,攻擊者開始攻擊后,Weblogic在服務(wù)端做了很多的判斷,如果設(shè)定了新的工作目錄,那么程序會自動拷貝所有舊目錄下的子目錄和文件到新的設(shè)定目錄里,并且設(shè)定新的目錄作為工作目錄,如果攻擊者通過begin.do上傳的話,Weblogic在服務(wù)端會判斷有沒有upload目錄,如果不存在會自動創(chuàng)建,再接著在upload目錄下創(chuàng)建Rs_Upload_格式化后的作為目錄名,緊接著獲取到import_file_name字段名作為后續(xù)的文件名拼接的一部分;如果通過config.do上傳的話就獲取GET請求中的timestamp參數(shù)作為后續(xù)webshell的文件名中的一部分,還是看下圖吧:
0x03 begin.do頁面上傳漏洞
首先在IDE里搭建好WebLogic環(huán)境,把應(yīng)用跑起來后點(diǎn)擊頁面右上方的文件夾按鈕,這里實(shí)現(xiàn)的是一個導(dǎo)入的功能
選擇任意文件上傳,筆者選擇上傳jsp文件:
抓取數(shù)據(jù)包可以看到其實(shí)真正存在上傳漏洞的地址是:
http://IP:7001/ws_utc/resources/ws/config/import?timestamp=1532403983779
因?yàn)槭锹┒磸?fù)現(xiàn)和分析,筆者一邊上傳的時候就一邊把數(shù)據(jù)包抓取下來,得到下圖的HTTP:
這段沒什么可說的就是一個簡單的上傳數(shù)據(jù)流,表單字段import_file_name是關(guān)鍵值,從產(chǎn)品防御的角度來看檢測它們也是關(guān)鍵的特征之一。
接下來就需要在IDE里動態(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ā)的核心包
并且查到了對應(yīng)的觸發(fā)漏洞類名的位置: \com\oracle\webservices\testclient\ws\util\RSDataHelper.class
定位到的方法convertFormDataMultiPart,代碼如下:
代碼中檢查了當(dāng)前工作目錄下是否存在upload目錄,如果沒有的話則創(chuàng)建,并且調(diào)用了cleanObsoleteFile方法強(qiáng)制遍歷了一次目錄中所有的文件,并且發(fā)現(xiàn)文件就刪除掉,調(diào)試過程如下圖 :
再創(chuàng)建了一個以字符串Rs_Upload_打頭的加格式化后的時間命名的目錄,并且作為上傳文件保存的目錄。
接下來程序獲得了上傳的表單的form-data , 經(jīng)過循環(huán)遍歷獲取了所有的表單字段和對應(yīng)的value,數(shù)據(jù)做兩塊存儲,一塊保存在kvMap集合中、獲取的附件通過saveAttacheFile方法保存到磁盤中,代碼如下:
下圖紅圈處是拼接后的物理路徑名:
接著追蹤調(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
由于筆者導(dǎo)入的文件格式以及數(shù)據(jù)并非weblogic能處理的,所以程序在context.createUnmarshaller方法處拋出空指針異常的錯誤,這就導(dǎo)致了上傳成功后Response的狀態(tài)碼是500,這也可以作為防御產(chǎn)品檢測的特征之一。動態(tài)調(diào)試異常如下圖:
到此begin.do頁面未授權(quán)訪問引起的任意文件上傳漏洞已經(jīng)很明朗,防御的策略可以檢測表單字段
0x04 config.do頁面上傳漏洞
訪問 http://IP:7001/ws_utc/config.do 頁面后點(diǎn)擊左側(cè)的“安全”菜單,添加一個Keystore,任意設(shè)置名字和密碼,當(dāng)然文件也是任意格式上傳,這里真的很隨意。
點(diǎn)擊提交后,抓取觸發(fā)地址: http://IP/ws_utc/resources/setting/keystore?timestamp=1532400069848 ; 抓取的包如下
和之前的套路一樣,上傳的時候就已經(jīng)打開了IDE調(diào)試功能,斷點(diǎn)后還是定位到RSDataHelper.class 文件,如下圖
這次獲取的表單字段是ks_filename,值得收藏,加入特征檢測范疇內(nèi);再跟進(jìn)看下關(guān)鍵的shell生成那一步
上傳后的shell位于工作臺配置的目錄下的/config/keystore/目錄中,文件名的格式相對來說簡單,采用了POST請求中URL地址上攜帶的參數(shù)timestamp的值加上下劃線拼接起來的文件名,讓筆者大跌眼鏡的是weblogic作為知名軟件提供商存在這樣低級的漏洞實(shí)在匪夷所思,再加上其一系列的反序列化繞過漏洞,只能說weblogic的產(chǎn)品能不用就不用,實(shí)在不行少用為妙。
0x05 防御措施
1.設(shè)置Config.do、begin.do頁面登錄授權(quán)后訪問;
2.IPS等防御產(chǎn)品可以加入相應(yīng)的特征;
3.升級到官方最新版本。
關(guān)于WebLogic兩處任意文件上傳漏洞動態(tài)分析是怎樣的就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,可以學(xué)到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。
分享名稱:WebLogic兩處任意文件上傳漏洞動態(tài)分析是怎樣的
本文URL:http://fisionsoft.com.cn/article/jiidjj.html