Java安全之JBoss反序列化漏洞分析


Java安全之JBoss反序列化漏洞分析

0x00 前言

看到網上的Jboss分析文章較少,從而激發起了興趣。前段時間一直沉迷於工具開發這塊,所以打算將jboss系列反序列化漏洞進行分析並打造成GUI的工具集。當然反序列化回顯這塊也是需要解決的一大問題之一,所以下面會出一系列文章對該漏洞的分析到工具的構造進行一個記錄。

0x01 環境搭建

首先拿CVE-2017-12149漏洞為例,進行調試分析。

CVE-2017-12149漏洞影響版本: 5.X 及 6.X

漏洞描述

該漏洞為 Java反序列化錯誤類型,存在於 Jboss 的 HttpInvoker 組件中的 ReadOnlyAccessFilter 過濾器中。該過濾器在沒有進行任何安全檢查的情況下嘗試將來自客戶端的數據流進行反序列化,從而導致了漏洞。

調試環境搭建

遠程調試

版本要求:JBoss-EAP-7.0及其以上版本

在Jboss的bin目錄下有個standalone.bat文件,以文本的形式打開此文件,在Jboss的bin目錄下有個standalone.bat文件。

set DEBUG_MODE=false 
set DEBUG_PORT_VAR=8787

false改成true就可以改成調試模式了,8787是調試模式的端口。重啟Jboss

而5.x、6.x:

jboss-6.1.0.Final/bin/run.conf 中#JAVA_OPTS="$JAVA_OPTS -Xrunjdwp:transport=dt_socket,address=8787,server=y,suspend=n"#即可。

為了方便這里使用

進去/vulhub-master/jboss/CVE-2017-12149修改docker-compose.yml 文件添加8787端口

version: '2'
services:
  jboss:
    image: vulhub/jboss:as-6.1.0
    ports:
      - "9990:9990"
      - "8080:8080" 
      - "8787:8787"

jboss-6.1.0.Final/bin/run.conf 中#JAVA_OPTS="$JAVA_OPTS -Xrunjdwp:transport=dt_socket,address=8787,server=y,suspend=n"#

重新啟動容器即可

docker restart 808d3fffae0c

此處有坑點,個別漏洞調用鏈查看不了可能是確實代碼,需要添加資源到idea中,而本次的這個核心漏洞組件httpha-invoker.sar,打包成jar包后無法進行斷點,需要扔到jd-gui中進行反編譯打包后添加到idea資源中。

0x02 漏洞分析

查看調用鏈定位漏洞位置

直接就接受值進行反序列化了,但並不是在一個位置存在任意數據反序列化

以上是org.jboss.invocation.http.servlet#ReadOnlyAccessFilter類的反序列化位置

org.jboss.invocation.http.servlet#InvokerServlet同樣存在任意反序列化點

查看web.xml發現/invoker/JMXInvokerServlet/*,/invoker/readonly,/JMXInvokerServlet/等地方都可觸發。

關於CVE-2017-7504類似漏洞位置在/jbossmq-httpil/HTTPServerILServlet ,在此不做分析。

0x03 結尾

文章略顯水分,因為JBoss這些漏洞接受過來就直接進行反序列化了,而且還是接受原生的數據並未進行加密解密處理。分析起來比較簡單,但是反序列化回顯的構造又成了一大問題,下篇文章再對反序列化回顯進行探究。


免責聲明!

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



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