您好,登錄后才能下訂單哦!
本篇內容主要講解“Oracle WebLogic RCE漏洞怎么解決”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“Oracle WebLogic RCE漏洞怎么解決”吧!
這個漏洞存在于一個Java方法中,攻擊者將能夠通過受控參數來調用該方法。在Java中,為了重新創建對象圖,代碼將會自動調用一個類中的readObject()或readExternal()方法,而這兩個方法以及其他的方法都可以被看作是一種有效的小工具反序列化漏洞源。
CVE-2020-2555的漏洞補丁引入了一個非常有意思的修改,補丁代碼修改了LimitFilter類中的toString()方法:
所有針對extract()方法的調用都被從toString()方法中移除了。extract()方法的重要性我們暫時先不做討論,而這種修改的有趣之處就在于,各種標準的JRE類都可以通過readObject()方法來調用和訪問toString()方法,比如說BadAttributeValueExpException:
我們可以從上面的代碼中看到,BadAttributeValueExpException類的序列化實例就可以用來調用任意類中的toString()方法,而這種技術就可以用來調用LimitFilter類中的toString()方法。沒錯,就是存在漏洞的LimitFilter類。
有關使用toString()方法作為入口點的小工具示例,請參閱ysoserial項目的CommonsCollections5 小工具。
眾所周知,Java中的Sink方法調用是存在安全風險的。比如說以下幾個場景:
1、通過調用FileOutputStream.write()方法創建任意文件;
2、通過調用Runtime.exec()方法執行任意命令;
3、通過調用method.invoke()方法來調用其他任意方法;
針對該漏洞,我們的重點應該放在一個針對Method.invoke()的調用身上,而這里的副作用就是可以通過反射來調用任意Java方法。根據這些給定的信息,我們可以查找由extract()方法調用導致Method.invoke()的調用,而我們在分析漏洞補丁的時候會將其標識為入口點。比如說,在Oracle Coherence庫中就有一個可序列化的類,而這個類實現了可序列化和可外部化的接口:
通過分析ReflectionExtractor類,證實了我們的猜想:
ReflectionExtractor提供了一種存在安全風險的操作原語,它將允許攻擊者調用其他類中的任意方法,并且攻擊者甚至還可以直接控制具體的方法以及相關參數。
一般來說嗎,攻擊者將需要調用多個方法才能夠在目標設備上實現遠程代碼執行。比如說,針對常見的Apache Commons Collections小工具,攻擊者需要使用ChainedTransformer類來將任意方法串聯起來以實現遠程代碼執行。相似的,Oracle Coherence庫中也提供了這樣一個類,即ChainedExtractor,而這個類允許我們串聯針對extract()方法的調用:
將我們了解到的東西全部整理之后,我們就可以使用下列調用鏈來實現遠程代碼執行了:
因此,如果目標使用了Oracle Coherence庫,那么攻擊者就可以通過發送惡意序列化對象來在目標環境中實現遠程代碼執行了。
到此,相信大家對“Oracle WebLogic RCE漏洞怎么解決”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。