首页/安全/渗透测试与安全评估速查/XXE 检测方法(XML 外部实体)
常见漏洞验证121 条

XXE 检测方法(XML 外部实体)

XML 解析若允许外部实体,可被用于读取本地文件或发起请求;验证聚焦 XML 入口与解析器是否解析自定义实体。

XXE 检测方法

XXE(XML External Entity,XML 外部实体)指 XML 解析器在解析用户提交的 XML 时允许引用外部实体定义,攻击者可借此读取服务器本地文件、探测内网服务,或让服务器向指定地址发起请求。典型入口包括 SOAP 接口、XML 文件上传、配置导入、RSS 与报表解析;容易被忽略的是那些同时接受 JSON 与 XML 的接口——用 XML 重放同样的请求即可命中解析器。验证步骤是先找接受 XML 的入口,提交包含自定义实体定义的教学样例,观察是否被展开或报出解析路径错误;带外验证只在自建回调服务上进行。

基本信息

典型入口SOAP 接口、XML 上传、配置导入、RSS 与报表解析
信号自定义实体被展开、报错暴露解析路径、带外回调
顺序先回显验证,再考虑带外验证
带外要求只使用自建或授权平台承载回调数据
修复方向禁用外部实体与 DTD 解析,或使用安全的解析配置

典型使用场景

  • SOAP 与 XML-RPC 接口:直接以 XML 作为请求体
  • 文件上传:上传 XML 配置、导入数据、导入书签
  • 报表与订阅:RSS、ATOM、报表模板解析
  • 双格式接口:同时接受 JSON 与 XML 的接口需用 XML 重放
  • 第三方对接:对接方提交的 XML 报文进入本地解析器

验证步骤

验证步骤
1. 找接受 XML 的入口(含兼容 XML 的接口)
2. 提交含自定义实体定义的教学样例,观察是否展开或报解析错误
3. 带外验证仅在自建回调服务上进行
4. 记录解析器类型、现象与请求样本(脱敏)
# 不要用第三方公网平台承载回调数据

解析器行为与风险

解析器行为风险说明
允许外部实体可读取本地文件最典型的风险表现
允许 DTD可被放大与滥用需一并评估资源消耗风险
回显解析报错泄露路径与版本错误信息可用于进一步探测
允许外部 DTD可发起外呼请求配合带外验证判断是否可达
不要用第三方公网平台承载回调数据;涉及敏感系统的 DTD 解析行为要与客户确认后再测。
修复视角:禁用外部实体与 DTD 解析,或在解析器层面关闭外部实体加载能力,并保持解析库版本更新。

易错点

  • 漏测同时接受 JSON 与 XML 的接口,用 XML 重放即可命中
  • 把普通解析报错当作已读取文件,结论过度推断
  • 用第三方公网平台承载带外数据,泄露且不可控
  • 只测一处解析入口,忽略配置导入与报表等其他解析点

数据来源与参考

  • OWASP Cheat Sheet:XML External Entity Prevention
  • CWE-611
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌