SCW图标
英雄背景无分隔线
博客

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

发布于 2019 年 8 月 01 日
最后更新于 2026年3月10日

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头和cookies。你也可以创建一个白名单,列出你希望解析器处理的特定DTD和命令,而不允许其他一切。

虽然白名单和过滤是有效的,但由于XXE注入攻击的数量不断增加,如果不需要该功能,仍然建议完全禁用DTD支持。

关于XXE注射的更多信息

要进一步阅读,你可以看一下OWASP对XXE注入攻击的看法。你也可以用Secure Code Warrior 平台的免费演示来测试你新发现的防御知识,该平台可以培训网络安全团队成为最终的网络战士。要了解更多关于击败这个漏洞以及其他威胁的流氓画廊,请访问Secure Code Warrior 博客。

查看资源
查看资源

XML 外部实体注入攻击(有时简称为 XXE 注入)相对较新,但它目前在黑客社区中非常受欢迎,而且随着成功的积累,这种攻击甚至会越来越多。

对更多感兴趣?

了解更多

Secure Code Warrior可帮助您的组织在整个软件开发生命周期中保护代码,并营造一种将网络安全置于首位的文化。无论您是应用安全经理、开发人员、首席信息安全官还是任何与安全相关的人员,我们都能帮助您的组织降低与不安全代码相关的风险。

预约演示
分享到:
领英品牌社交x 标志
作者
发布日期:2019年08月01日

分享到:
领英品牌社交x 标志

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头和cookies。你也可以创建一个白名单,列出你希望解析器处理的特定DTD和命令,而不允许其他一切。

虽然白名单和过滤是有效的,但由于XXE注入攻击的数量不断增加,如果不需要该功能,仍然建议完全禁用DTD支持。

关于XXE注射的更多信息

要进一步阅读,你可以看一下OWASP对XXE注入攻击的看法。你也可以用Secure Code Warrior 平台的免费演示来测试你新发现的防御知识,该平台可以培训网络安全团队成为最终的网络战士。要了解更多关于击败这个漏洞以及其他威胁的流氓画廊,请访问Secure Code Warrior 博客。

查看资源
查看资源

填写下面的表格下载报告

我们希望获得您的许可,以便向您发送有关我们的产品和/或相关安全编码主题的信息。我们将始终非常谨慎地对待您的个人信息,绝不会出于营销目的将其出售给其他公司。

提交
scw 成功图标
SCW 错误图标
要提交表单,请启用“分析”Cookie。完成后,可以随意再次禁用它们。

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头和cookies。你也可以创建一个白名单,列出你希望解析器处理的特定DTD和命令,而不允许其他一切。

虽然白名单和过滤是有效的,但由于XXE注入攻击的数量不断增加,如果不需要该功能,仍然建议完全禁用DTD支持。

关于XXE注射的更多信息

要进一步阅读,你可以看一下OWASP对XXE注入攻击的看法。你也可以用Secure Code Warrior 平台的免费演示来测试你新发现的防御知识,该平台可以培训网络安全团队成为最终的网络战士。要了解更多关于击败这个漏洞以及其他威胁的流氓画廊,请访问Secure Code Warrior 博客。

观看网络研讨会
开始吧
了解更多

点击下面的链接并下载此资源的PDF。

Secure Code Warrior可帮助您的组织在整个软件开发生命周期中保护代码,并营造一种将网络安全置于首位的文化。无论您是应用安全经理、开发人员、首席信息安全官还是任何与安全相关的人员,我们都能帮助您的组织降低与不安全代码相关的风险。

查看报告预约演示
查看资源
分享到:
领英品牌社交x 标志
对更多感兴趣?

分享到:
领英品牌社交x 标志
作者
发布日期:2019年08月01日

分享到:
领英品牌社交x 标志

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头和cookies。你也可以创建一个白名单,列出你希望解析器处理的特定DTD和命令,而不允许其他一切。

虽然白名单和过滤是有效的,但由于XXE注入攻击的数量不断增加,如果不需要该功能,仍然建议完全禁用DTD支持。

关于XXE注射的更多信息

要进一步阅读,你可以看一下OWASP对XXE注入攻击的看法。你也可以用Secure Code Warrior 平台的免费演示来测试你新发现的防御知识,该平台可以培训网络安全团队成为最终的网络战士。要了解更多关于击败这个漏洞以及其他威胁的流氓画廊,请访问Secure Code Warrior 博客。

目录

下载PDF
查看资源
对更多感兴趣?

了解更多

Secure Code Warrior可帮助您的组织在整个软件开发生命周期中保护代码,并营造一种将网络安全置于首位的文化。无论您是应用安全经理、开发人员、首席信息安全官还是任何与安全相关的人员,我们都能帮助您的组织降低与不安全代码相关的风险。

预约演示下载
分享到:
领英品牌社交x 标志
资源中心

帮助您入门的资源

更多帖子
资源中心

帮助您入门的资源

更多帖子