您好,登錄后才能下訂單哦!
如何進行Weblogic IIOP反序列化漏洞的CVE-2020-2551的漏洞分析,很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細講解,有這方面需求的人可以來學習下,希望你能有所收獲。
2020年1月15日,Oracle官方發布2020年1月關鍵補丁更新公告CPU(CriticalPatch Update),其中CVE-2020-2551的漏洞,漏洞等級為高危,CVVS評分為9.8分,漏洞利用難度低。影響范圍為10.3.6.0.0, 12.1.3.0.0, 12.2.1.3.0, 12.2.1.4.0。
從Oracle 官方的公告中看出該漏洞存在于Weblogic核心組件,影響的協議為IIOP協議。該漏洞依然是由于調用遠程對象的實現存在缺陷,導致序列化對象可以任意構造,在使用之前未經安全檢查,導致惡意代碼被執行。通過分析,該漏洞的PoC構造與歷史漏洞CVE-2017-3241、CVE-2018-3191都有一些相似的地方,而后在構造PoC的時候也可以發現。
IIOP:IIOP 是 CORBA 的通信協議。它定義通過 CORBA 客戶端與服務器之間的連線發送位的方式。
CORBA: 公用對象請求代理(調度)程序體系結構(Common Object Request Broker Architecture),縮寫為 CORBA,CORBA 是由對象管理組(OMG) 開發的標準分布式對象體系結構。遠程對象的接口在平臺無關接口定義語言 (IDL) 中進行說明。實現從 IDL 到特定編程語言的映射,將該語言綁定到 CORBA/IIOP。Java Standard Edition CORBA/IIOP 實現被稱為 JavaIDL。 與 IDL 到 Java (idlj) 編譯器一起,Java IDL 可用于定義、實現和訪問 Java 編程語言中的 CORBA 對象。
RMI-IIOP:Java 程序員在編程時需要在分布式編程解決方案RMI 和 CORBA/IIOP (Java IDL) 之間進行選擇。現在,可以通過遵循一些限制,可以使得RMI 服務器對象可以使用 IIOP 協議,并與任何語言編寫的 CORBA 客戶端對象進行通信。該解決方案被稱為 RMI-IIOP。 RMI-IIOP 結合了 RMI 的易用性與 CORBA 的跨語言互操作性。
具體更多的相關概念以及weblogic的IIOP的相關知識,可以查閱官方文檔,這里不做過多解釋。
通過網上放出的漏洞PoC利用截圖,我們可以根據異常的拋出行,大概推斷出漏洞的出發點,這里不難發現最后的異常點拋在了這里weblogic.utils.io.ObjectStreamClass
那么我們根據流出的圖,一步步逆向分析回去,向上跟蹤哪個方法調用了他它,可以發現這里weblogic.corba.utils. ValueHandlerImpl最后調用了readObject方法:
再繼續往上走,發現同方法的readValue函數這里調用了上面的方法:
繼續追蹤分析,可以發現主要的函數weblogic.iiop. IIOPInputStream方法中存在問題,到這里就基本很清晰了:
根據官方的描述,攻擊者可以通過 IIOP 協議遠程訪問 Weblogic Server 服務器上的遠程接口,傳入惡意數據,從而獲取服務器權限并在未授權情況下遠程執行任意代碼。Weblogic默認的IIOP協議端口為7001,默認開啟。根據漏洞披露的信息這個漏洞是JNDI注入。需要尋找到weblogic中的工廠類,進行封裝發送,通過查閱官方的一些手冊,可以使用weblogic.jndi.WLInitialContextFactory該工廠方法。
看完上述內容是否對您有幫助呢?如果還想對相關知識有進一步的了解或閱讀更多相關文章,請關注億速云行業資訊頻道,感謝您對億速云的支持。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。