Jboss 反序列化(CVE-2017-12149)的復現及修復方案


Jboss 反序列化(CVE-2017-12149)的復現

漏洞名稱: Jboss 反序列化(CVE-2017-12149)

漏洞描述: JBoss是一個管理EJB的容器和服務器,支持EJB 1.1、EJB 2.0和EJB3的規范。在/invoker/readonly路徑下,攻擊者可以構造序列化代碼傳入服務器進行反序列化,由於沒有對反序列化操作進行任何檢測,導致攻擊者可以執行任意代碼。

漏洞影響: Redhat JBoss Enterprise Application Platform 5.0\

影響版本: JBoss 5.x / 6.x

\

靶機相關環境

Ubuntu:20.04(要注意Ubuntu:20.04一般默認安裝了UFW(Uncomplicated Firewall))

jdk:1.8

jboss:jboss-5.1.0.GA

(因為jboss的版本比較老,所以修改配置文件時可以參考:https://wenku.baidu.com/view/18bc1b18c5da50e2524d7ff5.html

安裝配置成功后啟動服務通過另一個虛擬機訪問:

\

接下來我們先看下這個漏洞能干什么,直接使用暴力工具jboss-_CVE-2017-12149-master,(下載地址:https://github.com/yunxu1/jboss-_CVE-2017-12149

\

好,證明存在該漏洞。接下來就可以進行指令了:

\

這樣就進入了Ubuntu的終端命令,可以在此進行各種行為。例如新建文件等:

\

\

所以,這個漏洞的危險性可顯而知,那是這個漏洞是如何產生的呢?

Jboss 反序列化(CVE-2017-12149)的原理

Java序列化就是指把Java對象轉換為字節序列的過程,在傳遞和保存對象時.保證對象的完整性和可傳遞性。對象轉換為有序字節流,以便在網絡上傳輸或者保存在本地文件中。

Java反序列化就是指把字節序列恢復為Java對象的過程,根據字節流中保存的對象狀態及描述信息,通過反序列化重建對象。

序列化:

FileOutputStream fos = new FileOutputStream(file);

ObjectOutputStream oos = new ObjectOutputStream(fos);

oos.writeObject(st);

反序列化:

ileInputStream fis = new FileInputStream(file);

ObjectInputStream ois = new ObjectInputStream(fis);

Student st1 = (Student) ois.readObject();

而jboss的漏洞出現在HttpInvoker組件中的ReadOnlyAccessFilter過濾器中,源碼在jboss\server\all\deploy\httpha-invoker.sar\invoker.war\WEB-INF\classes\org\jboss\invocation\http\servlet目錄下的ReadOnlyAccessFilter.class文件中,其中doFilter函數代碼如下:

\

可以看出它從http中獲取數據,通過調用readobject()方法對數據流進行反序列操作,但是沒有進行檢查或者過濾。

知道了大概原理后我們就可以對其進行相應的修復。

Jboss 反序列化(CVE-2017-12149)的修復方案

修復原理: 通過向http-invoker.sar的web.xml文件中的安全約束添加url-pattern>來保護對整個 http-invoker上下文的訪問,不想使用http-invoker.sar可以將其刪除。

方法一:修改web.xml文件

具體步驟如下:

步驟一: 進入/jboss/server/default/deploy/http-invoker.sar/invoker.war/WEB-INF/web.xml,如圖所示:

\

步驟二: 在安全約束中添加 ,就是在security-constraint里添加或修改為以下代碼(第158行):

/* 如圖:

\

步驟三: 修改完成后,重啟jboss服務,再次通過另一個虛擬機訪問並且使用工具檢測,結果如下:

\

發現沒有執行漏洞,故修復成功。

方法二:不需要http-invoker.sar組件的直接刪除\

結果同方法一。

\

方法三:升級jboss到jboss7x版本\

以上使用的是JBoss AS 5.1.0,用JBoss AS 6.1.0.Final復現並使用相同步驟修復后結果同上。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM