Physical Address

304 North Cardinal St.
Dorchester Center, MA 02124

什么是XXE攻击?

安全性很难做到正确,即使在当今具有安全意识的世界中,也存在一些严重的漏洞,例如 XML 外部实体 (XXE),它们被忽视并最终成为破坏的原因。 XML 外部实体 (XXE) 攻击是一种计算机安全漏洞,通常存在于 Web 应用程序中,允许攻击者泄露通常受到连接网络或服务器保护的文件。 XXE 漏洞现已为人所知十多年,但自动化工具仅在最近才开始检测此问题的基本案例。 因此,如果利用此漏洞,损害可能非常严重,从信息泄露到拒绝服务,甚至在一切就绪的情况下远程执行代码。

什么是 XML 实体?

XML 允许使用实体。 实体充当将在 xml 文档中使用的数据的“值”占位符。 它们有助于缩小重复信息的条目并允许更轻松地编辑。 XML 有几个预定义的实体,用于引用特殊字符,如 ” 和 ‘&’。 XML 还允许用户定义自定义实体。

根据应用程序的 XML 解析器的设置方式,可以通过多种方式利用 XXE。

XXE 是如何被利用的?

XXE 可以通过多种方式被利用,具体取决于应用程序的 XML 解析器的设置方式以及响应在客户端的呈现方式。 该漏洞利用的一些载体包括应用程序的输出、后端评估和外部交互。

本地文件披露 – 场景 1

当应用程序评估易受攻击的请求并在客户端打印数据时,本地文件泄露是可能的。 使用正确配置的攻击向量,配置不当的解析器现在将查看服务器的系统文件并以攻击者请求的内容进行响应。

本地文件披露 – 场景 2

如果请求的文件不包含文本数据或者是损坏的 xml 文件,那么我们需要采取不同的方法。 我们将需要使用子 DTD 来提取这些文件类型。 这里使用参数实体而不是一般实体。

本地文件披露 – 场景 3

当应用程序评估用户输入并能够查找外部文件但不会在屏幕上打印任何输出数据时,我们将需要通过称为带外 XXE 的方法提取数据。

拒绝服务

创建拒绝服务的方法之一是使用“外部实体扩展”,您可以在其中引用外部 xml 文件。 如果 XML 解析器配置不正确,这将向攻击者 IP 发出 HTTP 请求。

攻击者 IP 上的目标文件可以以递归引用其他外部实体的方式编写。 在 XML 解析器处理此文件之前,它必须检索所有已定义的实体。 这可能导致所有可用资源的耗尽并有效地造成拒绝服务。

其他漏洞

根据应用程序及其 XML 解析器的配置方式,可以利用 XXE 来实现高级攻击,例如:

  • 内部端口扫描
  • 服务器端请求伪造
  • 远程代码执行

XXE 常见于哪里?

  • 上传文件功能
  • 文件导出
  • 基于 XML 的 HTTP 请求

如何修复 XXE

  • 请注意您的应用程序的 XML 库及其工作方式并禁用任何不需要的内容
  • 不允许用户定义的 DTD、属性和(外部)实体
  • 在 XML 解析器解析用户数据之前对用户数据执行输入验证
  • OWASP 详细描述了如何为每个平台修复 XXE

与 SQL 相关的问题相比,最近 XXE 被更频繁地观察到,并将继续成为越来越大的安全风险。 企业需要通过执行渗透测试来采取主动措施,以确定组织的 Web 应用程序的潜在攻击点。

声明:文章来源与网络。仅用于学习,请勿使用非法用途