PRELOADER

当前文章 : 《3种XXE不同攻击方式》

5/10/2019 —— 

3种XXE不同攻击方式

原文链接:https://www.we45.com/blog/3-ways-an-xxe-vulnerability-could-hit-you-hard

Web/移动应用程序,Word处理器,Web服务和内容管理平台使用可扩展标记语言(XML)格式在人类可读和机器可读格式的系统之间存储

和传输数据。如果未正确验证XML数据的输入,则可能使您容易受到许多不同类型的攻击,例如SQL注入,跨站点脚本,服务器端请求伪造,

本地文件读取,拒绝服务以及(此时的英雄) post)XML外部实体(XXE)注入攻击。本文主要关注使用XXE注入攻击的不同攻击场景。

什么是XXE?

XML外部实体(XXE)注入是一个严重的缺陷,允许攻击者读取服务器上的本地文件,访问内部网络,扫描内部端口或在远程服务器上执行命令。它针对解析XML的应用程序。

当包含对外部实体的引用的XML输入由弱配置的XML解析器处理时,会发生此攻击。攻击者通过在XML数据中嵌入恶意内联DOCTYPE定义来利用它。

当Web服务器处理恶意XML输入时,实体将被扩展,这可能会导致攻击者访问Web服务器的文件系统,远程文件系统访问或通过HTTP/HTTPS建立与任意主机的连接。

示例攻击场景

  1. 来自服务器的本地文件劫持
  2. 通过文件上载功能访问服务器文件
  3. 具有递归实体扩展的DOS攻击

攻击场景1:本地文件劫持服务器

当攻击者在请求中发送格式错误的XML payload时,服务器处理此payload并发回包含敏感信息的响应,例如服务器的本地文件,应用程序配置文件,内部网络详细信息等。

在少数情况下,在使用精心设计的XXE payload提交HTTP请求时,服务器使用服务器的/etc/passwd/进行响应。

快照1:具有恶意INLINE DOCTYPE定义的HTTP请求 - 具有相应的响应

但是,在许多情况下,服务器可能不会发回响应。攻击者可以利用此方法的另一种方法是在XXE payload中包含URL(攻击者控制的服务器)。

当服务器解析payload时,它会对攻击者控制的服务器进行额外调用,从而攻击者侦听受害者的服务器并捕获本地文件,服务器配置文件和其他服务器详细信息等信息。

以下图像(快照2和3)显示URL包含在XXE payload中。提交HTTP请求后,服务器会对攻击者控制的服务器进行额外调用。因此,

攻击者侦听来自受害者系统的请求并捕获服务器详细信息(/etc/passwd/)

快照2:包含受攻击控制URL的HTTP请求

快照3:受害者的服务器向攻击者的服务器发出额外的呼叫

攻击场景2:通过“ 文件上载” 功能访问服务器文件

许多应用程序支持“文件上载”功能(XLSX,DOCX,PPTX,SVG或任何XML MIME类型格式)以供进一步处理。通常,这些文件具有XML MIME类型。

攻击者可以利用固有的XML类型并上传嵌入了XXE payload的恶意文件。当服务器解析文件时,执行包含XXE有效载荷的文件,导致客户端服务器的敏感信息泄露。

请注意,在站点的一部分上解析XML的库(例如API)可能与解析上载文件的库不同。

快照4:将XXE payload嵌入到Docx文件中.Docx(就像pptx和xlsx一样)本质上是Open XML(OXML)文件。

快照5:将恶意docx文件上载到(示例)应用程序

快照6:文件提交后,服务器会响应服务器/ etc / passwd的敏感信息

攻击场景3:使用递归实体扩展进行DOS攻击

这种攻击也称为Billion Laugh攻击,XML Bomb或递归实体扩展攻击。当解析器不断扩展其自身内的每个实体时会发生此攻击,这会使服务器过载并导致服务器关闭。

从上图中,我们看到当解析器开始解析XML文件时,最初是“&lol9;” 引用实体“lol9”来获取值,但“lol9”本身再次引用“lol8”实体。

就像一个实体引用了十个实体一样,这十个实体再次引用其他实体。这样,当解析器扩展实体时,CPU的利用率会大幅增加,从而导致服务器崩溃并变得无响应。

结论

OWASP排名前10位的2017年排行榜中排名第四,XXE并不是一个新的漏洞,而是一个在最近的应用程序中越来越受欢迎的漏洞。成功的XXE攻击可能会导致安全和业务功能方面的巨大损失。阻止XXE攻击的几种方法包括。

  1. 禁用外部实体。必要时,仅允许受限和受信任的外部链接
  2. 关闭XML中的实体扩展
  3. 仔细检查所使用的XML库的版本是否容易受到XXE的攻击。
  4. 在解析之前验证用户提供的外部/内部实体和INLINE DOCTYPE定义的输入