- CNNVD編號(hào):CVE-2020-14825
- 危害等級(jí): 高危
- CVE編號(hào):未知
- 漏洞類(lèi)型: 遠(yuǎn)程代碼執(zhí)行
- 威脅類(lèi)型:遠(yuǎn)程
- 廠 商:未知
- 漏洞來(lái)源:未知
- 發(fā)布時(shí)間:2020-10-22
- 更新時(shí)間:2020-12-11
漏洞簡(jiǎn)介
WebLogic是美國(guó)Oracle公司出品的一個(gè)application server,確切的說(shuō)是一個(gè)基于JAVAEE架構(gòu)的中間件,WebLogic是用于開(kāi)發(fā)、集成、部署和管理大型分布式Web應(yīng)用、網(wǎng)絡(luò)應(yīng)用和數(shù)據(jù)庫(kù)應(yīng)用的Java應(yīng)用服務(wù)器。
將Java的動(dòng)態(tài)功能和Java Enterprise標(biāo)準(zhǔn)的安全性引入大型網(wǎng)絡(luò)應(yīng)用的開(kāi)發(fā)、集成、部署和管理之中。WebLogic是商業(yè)市場(chǎng)上主要的Java(J2EE)應(yīng)用服務(wù)器軟件(application server)之一,是世界上第一個(gè)成功商業(yè)化的J2EE應(yīng)用服務(wù)器,具有可擴(kuò)展性,快速開(kāi)發(fā),靈活,可靠性等優(yōu)勢(shì)。
此漏洞在Oracle官方在2020年10月份發(fā)布的最新安全補(bǔ)丁中披露。該漏洞允許未經(jīng)身份驗(yàn)證的攻擊者通過(guò)IIOP,T3進(jìn)行網(wǎng)絡(luò)訪問(wèn),未經(jīng)身份驗(yàn)證的攻擊者成功利用此漏洞可能接管Oracle WebLogic Server。CVSS評(píng)分9.8。
漏洞公示
此漏洞與Oracle 7月份公布的CVE-2020-14645漏洞原理相似,CVE-2020-14825漏洞利用oracle.eclipselink.coherence.integrated.internal.cache.LockVersionExtractor作為gadget入口。LockVersionExtractor類(lèi)繼承ValueExtractor接口,并實(shí)現(xiàn)了extract方法,因此在gadget調(diào)用extract方法的流程與CVE-2020-14645漏洞相同。
重點(diǎn)關(guān)注oracle.eclipselink.coherence.integrated.internal.cache.LockVersionExtractor#extract方法內(nèi)部的具體實(shí)現(xiàn)代碼。漏洞點(diǎn)的觸發(fā)是因?yàn)閑xtract方法中調(diào)用了AttributeAccessor.getAttributeValueFromObject(arg0)方法。在Weblogic補(bǔ)丁中的黑名單還包括org.eclipse.persistence.internal.descriptors.MethodAttributeAccessor。在此類(lèi)中實(shí)現(xiàn)了AttributeAccessor抽象類(lèi)中的getAttributeValueFromObject方法。
漏洞的觸發(fā)點(diǎn)位于this.getMethod.invoke(anObject, parameters);
其中anObject是在extract方法中傳入的可控參數(shù)arg0。由于在LockVersionExtractor的extract方法中調(diào)用的是getAttributeValueFromObject(arg0),因此invoke方法中的parameters為null,只能調(diào)用無(wú)參方法,這也和CVE-2020-14645的漏洞利用流程相同。
回到invoke方法,如果this.getMethod可控,就可以調(diào)用任意類(lèi)的任意無(wú)參方法。
在MethodAttributeAccessor類(lèi)中找到兩個(gè)與getMethod相關(guān)的方法,這里重點(diǎn)關(guān)注下面的設(shè)置getMethodName屬性的公有方法。
回到LockVersionExtractor#extract方法中,在調(diào)用getAttributeValueFromObject之前,會(huì)先調(diào)用this.accessor.initializeAttributes(arg0.getClass())方法。
在此方法中,通過(guò)反射獲取getMethodName屬性值對(duì)應(yīng)的方法,并調(diào)用setGetMethod方法為getMethod屬性賦值。由于getMethodName可控,因此getMethod屬性也可以控制。攻擊者可以通過(guò)控制getMethod和anObject完成jndi注入攻擊。
2.4 漏洞復(fù)現(xiàn)
搭建漏洞環(huán)境,構(gòu)造惡意的反序列化數(shù)據(jù),通過(guò)T3發(fā)送到目標(biāo)服務(wù)器,當(dāng)目標(biāo)服務(wù)器解析反序列化數(shù)據(jù),會(huì)觸發(fā)惡意代碼執(zhí)行,效果如圖:
參考網(wǎng)站
受影響實(shí)體
Oracle WebLogic Server 12.2.1.3.0
Oracle WebLogic Server 12.2.1.4.0
Oracle WebLogic Server 14.1.1.0.0
補(bǔ)丁
4.1 修復(fù)建議
官方已經(jīng)針對(duì)此漏洞發(fā)布補(bǔ)丁,請(qǐng)受影響的用戶(hù)參考以下鏈接安裝補(bǔ)丁更新:https://www.oracle.com/security-alerts/cpujul2020.html
4.2 臨時(shí)修復(fù)建議
1.可通過(guò)關(guān)閉IIOP協(xié)議對(duì)此漏洞進(jìn)行臨時(shí)防御。操作如下:
在Weblogic控制臺(tái)中,選擇“服務(wù)”->”AdminServer”->”協(xié)議”,取消“啟用IIOP”的勾選。并重啟Weblogic項(xiàng)目,使配置生效。
2.對(duì)T3服務(wù)進(jìn)行控制
控制T3服務(wù)的方法:
在上圖這個(gè)weblogic界面中選擇安全-篩選器,在下方出現(xiàn)的界面中找到“連接篩選器”,在里面輸入
security.net.ConnectionFilterImpl
然后在連接篩選器規(guī)則中輸入
127.0.0.1 * * allow t3 t3s,0.0.0.0/0 * * deny t3 t3s
最后保存并重啟服務(wù)器即可生效。
4.2 深信服解決方案
【深信服下一代防火墻】可輕松防御此漏洞, 建議部署深信服下一代防火墻的用戶(hù)更新至最新的安全防護(hù)規(guī)則,可輕松抵御此高危風(fēng)險(xiǎn)。
【深信服云盾】已第一時(shí)間從云端自動(dòng)更新防護(hù)規(guī)則,云盾用戶(hù)無(wú)需操作,即可輕松、快速防御此高危風(fēng)險(xiǎn)。
【深信服安全感知平臺(tái)】可檢測(cè)利用該漏洞的攻擊,實(shí)時(shí)告警,并可聯(lián)動(dòng)【深信服下一代防火墻等產(chǎn)品】實(shí)現(xiàn)對(duì)攻擊者ip的封堵。
【深信服安全運(yùn)營(yíng)服務(wù)】深信服云端安全專(zhuān)家提供7*24小時(shí)持續(xù)的安全運(yùn)營(yíng)服務(wù)。對(duì)存在漏洞的用戶(hù),檢查并更新了客戶(hù)防護(hù)設(shè)備的策略,確保客戶(hù)防護(hù)設(shè)備可以防御此漏洞風(fēng)險(xiǎn)。