博客

程序员征服安全:分享与学习系列 - XXE 注入

August 1, 2019

与那些问世多年却依然频频出现的经典漏洞相比,XML 外部实体注入攻击(简称 XXE 注入)相对较新。但它目前在黑客社区中极受欢迎,且随着攻击成功率的提升,其影响力正日益扩大。

事实上,OWASP 已将 XXE 注入列为网站需要重点防范和积极抵御的十大漏洞之一。不过不必担心,XXE 注入并不比其他网络攻击手段更强大,它只是出现得较晚,且人们对其了解尚浅。该漏洞是可以预防的,甚至可以被彻底根除。

在本期节目中,我们将学习:

  • 攻击者如何利用 XXE 注入
  • 为什么 XXE 注入很危险
  • 预防此漏洞的技术手段。

攻击者如何触发 XXE 注入?

当恶意用户获得提交 XML 代码的权限时,就可能发生 XXE 注入漏洞。他们利用这一权限创建对外部实体的引用。这些外部引用和代码旨在绕过默认设置或配置薄弱的 XML 解析器。

攻击者利用了 XML 标准中将实体定义为某种存储单元的概念,而这种存储可以是外部的,也可以是内部的。如果使用得当,它允许 XML 处理器访问远程资源。但攻击者往往利用此功能进行探测网站内部结构、通过触发大型系统进程访问远程资源来发起拒绝服务攻击,甚至将数据从本地主机转储到他们控制的远程主机——这使其成为窃取 XML 数据库中密码或个人信息等重要数据的有效手段。

攻击中涉及的实际代码通常相当简单,仅仅是利用了实体功能。例如,这可能允许黑客访问主密码文件:

<!ENTITY hackwithxxe SYSTEM file:///etc/password>

为什么 XXE 注入很危险?

XXE 注入攻击之所以危险且普遍,有几个原因。首先,目前人们对该漏洞的了解还不够深入。其次,攻击者利用它所能获得的收益相当可观。例如,它允许持续性攻击者缓慢地映射内部网络中的所有路径,甚至进行端口扫描。虽然这可能需要相当长的时间,但黑客的活动几乎不可能被目标网络的主动防御系统发现,因为他们只是在向服务器发送由受信任的 XML 解析器处理的 XML 代码。

一旦完成映射,攻击者就可以利用相同的 XXE 注入技术获取他们需要的任何文件,无论是直接窃取信息,还是通过窃取有效的用户凭据来发动二次攻击。最后,那些只想制造混乱的攻击者可以触发拒绝服务攻击,命令应用程序尝试访问旨在拖垮系统的远程资源。

消除 XXE 注入漏洞

由于 XXE 注入攻击的激增,许多 XML 解析器开始默认完全禁用外部实体(有时称为 DTD)。对于这些解析器,关键在于不要启用该功能。

即使是允许 DTD 的解析器,也可以禁用该功能。通常,需要类似以下的代码来彻底阻止它,但请查阅您本地框架的文档以获取所需的准确代码。

factory.setFeature("http://apache.org/xml/features/disallow-doctype-decl", true);

遵循安全原则,所有用户输入都应使用全应用范围的过滤器进行清理和验证。不要忘记包含 GET 和 POST 参数、HTTP 标头以及 Cookie。您还可以创建一个白名单,仅允许解析器处理特定的 DTD 和命令,并禁止所有其他内容。

虽然白名单和过滤有效,但鉴于 XXE 注入攻击的日益增多,如果不需要该功能,仍建议完全禁用 DTD 支持。

关于 XXE 注入的更多信息

如需深入了解,您可以查看 OWASP 关于 XXE 注入攻击 的说明。您还可以通过 Secure Code Warrior 平台的免费演示 来测试您新掌握的防御知识,该平台致力于将网络安全团队培养成顶尖的网络战士。若想了解更多关于攻克此漏洞及其他各类威胁的信息,请访问 Secure Code Warrior 博客。

标语

在 AI 驱动的开发成果发布前实现有效治理

评估 AI 辅助风险,在提交代码时强制执行安全编码策略,并加速整个软件开发生命周期的安全交付。

预约演示
资源库

探索更多博客

获取有关安全编码、人工智能治理和软件风险管理的专家内容。

浏览全部
案例研究
筛选标签
这是 div 块中的一段文本。

Supercharged Security Awareness: How Tournaments are Inspiring Developers at Erste Group

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse varius enim in eros elementum tristique. Duis cursus, mi quis viverra ornare, eros dolor interdum nulla, ut commodo diam libero vitae erat. Aenean faucibus nibh et justo cursus id rutrum lorem imperdiet. Nunc ut sem vitae risus tristique posuere.

了解更多
案例研究
筛选标签
这是 div 块中的一段文本。

Security as culture: How Blue Prism cultivates world-class secure developers

Learn how Blue Prism, the global leader in intelligent automation for the enterprise, used Secure Code Warrior's agile learning platform to create a security-first culture with their developers, achieve their business goals, and ship secure code at speed

了解更多
案例研究
筛选标签
这是 div 块中的一段文本。

统一的安全文化:Sage 如何打造其安全倡导者项目

了解 Sage 如何通过灵活且以关系为导向的方法提升安全性,成功培养了 200 多名安全倡导者,并实现了显著的风险降低。

了解更多
博客
筛选标签
这是 div 块中的一段文本。

2026年网络安全意识月:理解人工智能安全对企业防御至关重要

目前,大多数顶级人工智能公司已公开呼吁全球放缓人工智能的发展速度,以便安全防护措施能够跟上步伐。然而事实是,严重的安全问题已经显现。随着人工智能实施带来的经济成本和风险不断累积,无数安全领导者和高管团队正处于紧迫的境地。

了解更多
博客
筛选标签
这是 div 块中的一段文本。

赋能要素 8:打造项目品牌

成功的安全编码项目不仅需要优质的内容。赋能要素 8 展示了如何通过品牌化将参与过程转变为一种令人向往、以地位为驱动的体验。

了解更多
博客
筛选标签
这是 div 块中的一段文本。

每一位员工现在都处于 AI 网络安全的最前线

企业技术格局正以一种鲜有人预料到的速度发生剧变,直到为时已晚。我们已正式跨越了从人工编写代码和基础辅助编程,进入“智能体开发生命周期”(ADLC)的时代。虽然自主 AI 智能体有望在多个职能领域实现前所未有的效率,但它们也带来了全新的安全和监管风险。

了解更多

在产品发布前确保 AI 驱动的开发安全

洞察开发风险,执行安全策略,并在整个软件开发生命周期中预防漏洞。

预约演示
未找到相关项目。