JBOSS AS 5.x/6.x 反序列化命令執行漏洞(CVE-2017-12149)

JBOSS AS 5.x/6.x 反序列化命令執行漏洞(CVE-2017-12149)

這裏寫圖片描述

1. 漏洞描述

  • 漏洞描述:該漏洞爲 Java反序列化錯誤類型,存在於 Jboss 的 HttpInvoker 組件中的 ReadOnlyAccessFilter 過濾器中。該過濾器在沒有進行任何安全檢查的情況下嘗試將來自客戶端的數據流進行反序列化,從而導致了漏洞。
  • 漏洞編號:CVE-2017-12149
  • 漏洞等級:高危
  • 漏洞版本:
    • Jboss AS 5.x
    • JbossAS 6.x

2. 漏洞簡介

​ 2017年8月30日,Redhat公司發佈了一個JbossAS 5.x系統的遠程代碼執行嚴重漏洞通告,相應的漏洞編號爲CVE-2017-12149。近期有安全研究者發現JbossAS 6.x也受該漏洞影響,攻擊者可能利用此漏洞無需用戶驗證在系統上執行任意命令。

漏洞名稱 JBOSS AS 5.x/6.x 反序列化命令執行漏洞
威脅類型 遠程命令執行
威脅等級
漏洞ID CVE-2017-12149
受影響系統及應用版本 Jboss AS 5.x Jboss AS 6.x

3. 漏洞分析

該漏洞存在於http invoker 組件的 ReadOnlyAccessFilter 的 doFilter 中。如下圖所示:

這裏寫圖片描述

方法中的代碼在沒有進行任何安全檢查的情況下,將來自客戶端的數據流(request.getInputStream())進行了反序列化操作(紅色箭頭所示),從而導致了反序列化漏洞。

4. 漏洞復現

環境生成後,訪問頁面,可以看到jboss的首頁:

這裏寫圖片描述

我們使用bash來反彈shell,但由於Runtime.getRuntime().exec()中不能使用管道符等bash需要的方法,我們需要用進行一次編碼。

編碼網址http://jackson.thuraisamy.me/runtime-exec-payloads.html

將構造好的反彈shell的payload(將ip端口設置爲你自己想要反彈的ip和端口):

這裏寫圖片描述

使用網上公佈的java反序列化的payload構造工具ysoserial-0.0.6-SNAPSHOT-all.jar來構造payload,

這裏寫圖片描述

將生成的poc.ser拷貝到我們寫好的poc腳本中,將url替換成你自己的url,運行腳本,在你自己的服務器上通過nc監聽反彈的端口

這裏寫圖片描述

這裏寫圖片描述

運行腳本,可以看到成功反彈shell,獲取flag:

這裏寫圖片描述

5. 修復建議

  1. 不需要 http-invoker.sar 組件的用戶可直接刪除此組件。

  2. 添加如下代碼至 http-invoker.sar 下 web.xml 的 security-constraint 標籤中,對 http invoker 組件進行訪問控制:

    <url-pattern>/*</url-pattern>
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章