千家信息网

XML外部实体注入漏洞的示例分析

发表于:2026-10-31 作者:千家信息网编辑
千家信息网最后更新 2026年10月31日,小编今天带大家了解XML外部实体注入漏洞的示例分析,文中知识点介绍的非常详细。觉得有帮助的朋友可以跟着小编一起浏览文章的内容,希望能够帮助更多想解决这个问题的朋友找到问题的答案,下面跟着小编一起深入学
千家信息网最后更新 2026年10月31日XML外部实体注入漏洞的示例分析

小编今天带大家了解XML外部实体注入漏洞的示例分析,文中知识点介绍的非常详细。觉得有帮助的朋友可以跟着小编一起浏览文章的内容,希望能够帮助更多想解决这个问题的朋友找到问题的答案,下面跟着小编一起深入学习"XML外部实体注入漏洞的示例分析"的知识吧。

一、XML外部实体注入

XML 外部实体注入漏洞也就是我们常说的 XXE 漏洞。XML 作为一种使用较为广泛的数据传输格式,很多应用程序都包含有处理 xml 数据的代码,默认情况下,许多过时的或配置不当的 XML 处理器都会对外部实体进行引用。

如果攻击者可以上传 XML 文档或者在 XML 文档中添加恶意内容,通过易受攻击的代码、依赖项或集成,就能够攻击包含缺陷的XML处理器。XXE 漏洞的出现和开发语言无关,只要是应用程序中对 xml 数据做了解析,而这些数据又受用户控制,那么应用程序都可能受到 XXE 攻击。本篇文章以 java 程序为例给大家介绍 XXE 漏洞的成因及修复。XXE 漏洞详细请见 CWE-611: Improper Restriction of XML External Entity Reference ('XXE')(http://cwe.mitre.org/data/definitions/611.html)。

二、XML外部实体注入

XXE 漏洞可能会用于提取数据、执行远程服务器请求、扫描内部系统、执行拒绝服务攻击和其他攻击。业务影响主要取决于受影响的引用程序和数据保护需求。

2018年至今,CVE 中共有发布了 92 条漏洞信息与其相关。部分CVE如下:

CVE-2018-8027Apache Camel 2.20.0 到 2.20.3 和2.21.0 Core 在 XSD 验证处理器中存在 XXE 漏洞。
CVE-2018-13439微信支付 Java SDK 中的 WXPayUtil 类中存在XXE漏洞。
CVE-2018-1000548在版本号小于 14.3 的 Umlet 中,在文件解析中存在XML外部实体注入漏洞,可能导致机密数据泄露、拒绝服务、服务器端请求伪造。此攻击可以通过特制的 UXF 文件进行攻击。
CVE-2018-1364
IBM Content Bavigator 2.0 和 3.0 版本中在处理XML数据时,易受XML外部实体(XXE)攻击。远程攻击者可以利用此漏洞暴露敏感信息或占用内存资源。

三、示例代码

3.1 缺陷代码

本节使用示例代码来源为某开源支付 Java SDK (https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=11_1),源文件名:WXPayUtil.java,文件路径为:java-sdk-v3\src\main\java\com\github\wxpay\sdk。

在上述代码可以看到在25行处数据通过 xmlToMap 形参传入,数据未做任何过滤,且 XML 处理器也未做安全设置就在32行处对数据做了解析,而实际场景中,参数 strXML 也是受攻击者控制的,这样攻击者可能通过构造恶意的 strXML 来进行 XXE 攻击。

使用360代码卫士对上述示例代码进行检测,可以在文件第32行检出"有风险的XML外部实体注入"缺陷。如图1所示:

图1 检测出有风险的XML外部实体注入

3.2 修复代码

在上述修复代码中的第28行使用的是一个xml工具类WXPayXmlUtil,用于生成一个安全的xml处理器。而 WXPayXmlUtil 类中最为关键的是第16行,通过 setFeature 让生成的 xml 处理器完全禁用 DTDS。通过图2可以看出,360代码卫士对修复后的代码并未检出缺陷。


图2 XXE漏洞修复示例

四、如何避免XXE漏洞

常见的避免方法:

1. 尽可能使用简单的数据格式(如:JSON),避免对敏感数据进行序列化;

2. 及时修复或更新应用程序或底层操作系统使用的所有XML处理器和库。同时,通过依赖项检测,将SOAP更新到1.2版本或更高版本;

3. 在应用程序的所有XML解析器中禁用XML外部实体和DTD进程,具体实现可以参考《OWASP Cheat Sheet 'XXE Prevention'》(https://www.owasp.org/index.php/XML_External_Entity_(XXE)_Prevention_Cheat_Sheet)

如下代码是java应用程序中使用DocumentBuilderFactory解析xml时防范XXE漏洞的示例:

4. 输入校验:在服务器端使用白名单进行输入验证和过滤,以防在XML文档、标题或节点中出现恶意数据。

5. 验证XML和XSL文件上传功能是否使用XSD验证或其他类似验证的方法来验证上传的XML文件

6. DAST工具需要额外的手动步骤来检查和利用XXE漏洞,而使用ASAT工具可以通过检测依赖项和安全配置来发现XXE漏洞。

感谢大家的阅读,以上就是"XML外部实体注入漏洞的示例分析"的全部内容了,学会的朋友赶紧操作起来吧。相信小编一定会给大家带来更优质的文章。谢谢大家对网站的支持!

漏洞 数据 代码 攻击 实体 处理 示例 程序 处理器 应用程序 文件 应用 验证 服务 攻击者 版本 缺陷 检测 分析 安全 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 江苏根荣互联网科技 盈实互联网科技 互联网下的科技发展 狮子座互联网科技培训 哈尔滨新华互联网科技 互联网实体化科技化 受益于互联网科技的高速发展 深圳市优智互联网科技有限公司 银川新华互联网科技学校联系电话 乌苏新华互联网科技做什么的 天津腾达互联网科技有限公司 互联网新科技动漫ppt素材 乌鲁木齐新华智原互联网科技学校 深圳市罗太互联网科技有限公司 互联网在线教育科技创业 朱啸虎曾投资哪些互联网科技企业 中天科技中国工业互联网 陕西九四连强互联网科技有限公司 华人运通互联网科技公司 科技美学互联网 艺术 互联网通讯科技 互联网医疗科技 善班互联网科技有限公司 卫星互联网科技股票 成都玖崟互联网科技有限公司乐商圈怎么样 银川新华互联网科技职业技术培训学校图片 链环科技传统企业怎么转型互联网 深圳育鹏互联网科技有限公司招聘 北京互联网科技类企业分布 好易买互联网科技
0