
编码员征服安全。分享与学习系列 - XXE注入
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注入,与一些经典的漏洞相比,它相对较新,这些漏洞在出现多年后仍在不断地出现。但它现在在黑客社区中非常流行,而且随着它的成功案例越来越多,也越来越流行。
事实上,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注入,与一些经典的漏洞相比,它相对较新,这些漏洞在出现多年后仍在不断地出现。但它现在在黑客社区中非常流行,而且随着它的成功案例越来越多,也越来越流行。
事实上,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注入,与一些经典的漏洞相比,它相对较新,这些漏洞在出现多年后仍在不断地出现。但它现在在黑客社区中非常流行,而且随着它的成功案例越来越多,也越来越流行。
事实上,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 博客。
资源
Secure Code Warrior corporate overview
Secure Code Warrior is an AI Software Governance platform designed to enable organizations to safely adopt AI-driven development by bridging the gap between development velocity and enterprise security. The platform addresses the "Visibility Gap," where security teams often lack insights into shadow AI coding tools and the origins of production code.
安全代码培训主题和内容
Our industry-leading content is always evolving to fit the ever changing software development landscape with your role in mind. Topics covering everything from AI to XQuery Injection, offered for a variety of roles from Architects and Engineers to Product Managers and QA. Get a sneak peek of what our content catalog has to offer by topic and role.
资源
Observe and Secure the ADLC: A Four-Point Framework for CISOs and Development Teams Using AI
While development teams look to make the most of GenAI’s undeniable benefits, we’d like to propose a four-point foundational framework that will allow security leaders to deploy AI coding tools and agents with a higher, more relevant standard of security best practices. It details exactly what enterprises can do to ensure safe, secure code development right now, and as agentic AI becomes an even bigger factor in the future.






