Web/移动应用程序,Word处理器,Web服务和内容管理平台使用可扩展标记语言(XML)格式在人类可读和机器可读格式的系统之间存储
和传输数据。如果未正确验证XML数据的输入,则可能使您容易受到许多不同类型的攻击,例如SQL注入,跨站点脚本,服务器端请求伪造,
本地文件读取,拒绝服务以及(此时的英雄) post)XML外部实体(XXE)注入攻击。本文主要关注使用XXE注入攻击的不同攻击场景。
XML外部实体(XXE)注入是一个严重的缺陷,允许攻击者读取服务器上的本地文件,访问内部网络,扫描内部端口或在远程服务器上执行命令。它针对解析XML的应用程序。
当包含对外部实体的引用的XML输入由弱配置的XML解析器处理时,会发生此攻击。攻击者通过在XML数据中嵌入恶意内联DOCTYPE定义来利用它。
当Web服务器处理恶意XML输入时,实体将被扩展,这可能会导致攻击者访问Web服务器的文件系统,远程文件系统访问或通过HTTP/HTTPS建立与任意主机的连接。
来自服务器的本地文件劫持
通过文件上载功能访问服务器文件
具有递归实体扩展的DOS攻击
当攻击者在请求中发送格式错误的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:受害者的服务器向攻击者的服务器发出额外的呼叫
许多应用程序支持“文件上载”功能(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的敏感信息
这种攻击也称为Billion Laugh攻击,XML Bomb或递归实体扩展攻击。当解析器不断扩展其自身内的每个实体时会发生此攻击,这会使服务器过载并导致服务器关闭。
从上图中,我们看到当解析器开始解析XML文件时,最初是“&lol9;”
引用实体“lol9”
来获取值,但“lol9”
本身再次引用“lol8”
实体。
就像一个实体引用了十个实体一样,这十个实体再次引用其他实体。这样,当解析器扩展实体时,CPU的利用率会大幅增加,从而导致服务器崩溃并变得无响应。
在OWASP排名前10位的2017年排行榜中排名第四,XXE并不是一个新的漏洞,而是一个在最近的应用程序中越来越受欢迎的漏洞。成功的XXE攻击可能会导致安全和业务功能方面的巨大损失。阻止XXE攻击的几种方法包括。
禁用外部实体。必要时,仅允许受限和受信任的外部链接
关闭XML中的实体扩展
仔细检查所使用的XML库的版本是否容易受到XXE的攻击。
在解析之前验证用户提供的外部/内部实体和INLINE DOCTYPE定义的输入
邀请码
请各位师父,多多发表文章,论坛会固定清理不活跃用户
A6795A1D64A6
31E8E5C68629
E7F0311C40A6
来源:先知
排版自:衡阳信安
注:如有侵权请联系删除
推荐阅读
学习更多技术,关注我: