JBOSS反序列化的残羹剩饭之CVE-2015-7504、CVE-2013-4810
字数 1239 2025-08-15 21:31:50

JBOSS反序列化漏洞分析:CVE-2015-7504与CVE-2013-4810

0x00 CVE-2015-7504漏洞分析

漏洞背景

CVE-2015-7504影响JBoss AS 4.x及之前版本,存在于JbossMQ实现过程的JMS over HTTP Invocation Layer组件中。

漏洞位置

漏洞具体位于HTTPServerILServlet.java文件中,该文件处理JMS over HTTP的通信。

漏洞代码分析

doGet方法

public void doGet(HttpServletRequest request, HttpServletResponse response) 
    throws ServletException, IOException {
    // 输出内容表明接口可用
    response.setContentType("text/html");
    PrintWriter out = response.getWriter();
    out.println("JMS over HTTP Invocation Layer");
}

关键点

  • 如果访问/jbossmq-httpil/HTTPServerILServlet路径能得到"JMS over HTTP Invocation Layer"响应,说明接口开放

doPost方法

public void doPost(HttpServletRequest request, HttpServletResponse response) 
    throws ServletException, IOException {
    // 直接调用processRequest方法
    processRequest(request, response);
}

processRequest方法

protected void processRequest(HttpServletRequest request, HttpServletResponse response) 
    throws ServletException, IOException {
    // 关键漏洞点
    ObjectInputStream ois = new ObjectInputStream(request.getInputStream());
    Object obj = ois.readObject(); // 反序列化漏洞点
    // ...后续处理...
}

漏洞原理

  • 直接对用户输入的HTTP请求体进行反序列化操作
  • 没有进行任何安全校验或过滤
  • 攻击者可构造恶意序列化对象实现远程代码执行

漏洞验证方法

  1. 访问目标URL:http://target:port/jbossmq-httpil/HTTPServerILServlet
  2. 如果返回"JMS over HTTP Invocation Layer",则存在漏洞

POC构造与利用

  1. 使用ysoserial等工具生成恶意序列化payload
  2. 向目标URL发送POST请求,payload放在请求体中
  3. 可验证是否成功执行命令(如创建文件等)

0x01 CVE-2013-4810漏洞分析

漏洞背景

该漏洞影响JBoss多个版本,存在于EJBInvokerServlet组件中。

漏洞位置

漏洞位于/invoker/EJBInvokerServlet路径

漏洞原理

  • 该servlet接收POST请求后直接读取输入流进行反序列化
  • 与CVE-2015-7504类似,都是由于不安全的反序列化操作导致

漏洞验证方法

  1. 访问目标URL:http://target:port/invoker/EJBInvokerServlet
  2. 如果返回200状态码或相关响应,则存在漏洞

利用方式

  1. 构造恶意序列化对象
  2. /invoker/EJBInvokerServlet发送POST请求
  3. 在请求体中包含恶意payload

0x02 防御措施

  1. 升级JBoss版本:升级到不受影响的版本
  2. 删除或限制访问
    • 删除jbossmq-httpilinvoker相关组件
    • 在防火墙或反向代理中限制对这些路径的访问
  3. 配置安全策略
    • 实现输入验证
    • 限制反序列化操作
  4. 使用安全产品:部署WAF等安全产品拦截恶意请求

0x03 总结

这两个漏洞都是典型的Java反序列化漏洞,共同特点是:

  1. 直接对用户输入进行反序列化
  2. 缺乏必要的安全校验
  3. 可通过构造恶意序列化对象实现RCE

对于安全研究人员,理解这些漏洞有助于:

  • 掌握Java反序列化漏洞原理
  • 学习如何分析Servlet组件安全
  • 提高漏洞挖掘和利用能力
JBOSS反序列化漏洞分析:CVE-2015-7504与CVE-2013-4810 0x00 CVE-2015-7504漏洞分析 漏洞背景 CVE-2015-7504影响JBoss AS 4.x及之前版本,存在于JbossMQ实现过程的JMS over HTTP Invocation Layer组件中。 漏洞位置 漏洞具体位于 HTTPServerILServlet.java 文件中,该文件处理JMS over HTTP的通信。 漏洞代码分析 doGet方法 关键点 : 如果访问 /jbossmq-httpil/HTTPServerILServlet 路径能得到"JMS over HTTP Invocation Layer"响应,说明接口开放 doPost方法 processRequest方法 漏洞原理 : 直接对用户输入的HTTP请求体进行反序列化操作 没有进行任何安全校验或过滤 攻击者可构造恶意序列化对象实现远程代码执行 漏洞验证方法 访问目标URL: http://target:port/jbossmq-httpil/HTTPServerILServlet 如果返回"JMS over HTTP Invocation Layer",则存在漏洞 POC构造与利用 使用ysoserial等工具生成恶意序列化payload 向目标URL发送POST请求,payload放在请求体中 可验证是否成功执行命令(如创建文件等) 0x01 CVE-2013-4810漏洞分析 漏洞背景 该漏洞影响JBoss多个版本,存在于EJBInvokerServlet组件中。 漏洞位置 漏洞位于 /invoker/EJBInvokerServlet 路径 漏洞原理 该servlet接收POST请求后直接读取输入流进行反序列化 与CVE-2015-7504类似,都是由于不安全的反序列化操作导致 漏洞验证方法 访问目标URL: http://target:port/invoker/EJBInvokerServlet 如果返回200状态码或相关响应,则存在漏洞 利用方式 构造恶意序列化对象 向 /invoker/EJBInvokerServlet 发送POST请求 在请求体中包含恶意payload 0x02 防御措施 升级JBoss版本 :升级到不受影响的版本 删除或限制访问 : 删除 jbossmq-httpil 和 invoker 相关组件 在防火墙或反向代理中限制对这些路径的访问 配置安全策略 : 实现输入验证 限制反序列化操作 使用安全产品 :部署WAF等安全产品拦截恶意请求 0x03 总结 这两个漏洞都是典型的Java反序列化漏洞,共同特点是: 直接对用户输入进行反序列化 缺乏必要的安全校验 可通过构造恶意序列化对象实现RCE 对于安全研究人员,理解这些漏洞有助于: 掌握Java反序列化漏洞原理 学习如何分析Servlet组件安全 提高漏洞挖掘和利用能力