WEB通用漏洞-XML-XXE

WEB通用漏洞-XML-XXE

XML-XXE原理

XML被设计为传输和存储数据,XML文档结构包括:XML声明、DTD文档类型定义(可选)、文档元素。其焦点是数据的内容,其把数据从HTML分离,是独立于软件和硬件的信息传输工具。

XXE漏洞即XML外部实体注入漏洞,XXE漏洞发生在应用程序在解析XML输入时,没有禁止外部实体的加载,导致可加载恶意外部文件,造成文件读取(重点)、命令执行、内网端口扫描、攻击内网网站等危害。

换句话说,XXE指:攻击者利用xml写一个带有类似文件读取的代码尝试发送给服务端,服务端进行解析的时候,就会导致类似文件读取的功能。

XML和HTML的主要差异

XML被设计为传输和存储数据,其焦点是数据的内容。

HTML被设计用来显示数据,其焦点是数据的外观。

HTML旨在显示信息,而XML旨在传输信息。

XXE的利用与玩法

关于XML的具体语法规则、实现诸如文件读取功能等,请在网上自行查询。

一篇文章:https://www.cnblogs.com/20175211lyz/p/11413335.html

文件读取&带外&实体引用

以下是XML的一些简单用法,仅供参考:

img

注:上述的带外测试主要用来判断数据不回显的问题。这个问题我们可以采用DNS带外来实现。(DNSlog)

进行XXE测试的时候,很有可能会出现以下三种情况:

  • 数据无回显
  • payload存在错误
  • 无漏洞

对于以上三种情况,我们只能逐个采用排除法来解决。可以使用DNS带外测试是否存在XXE漏洞。

如果在XXE测试时,使用DNS带外,成功在DNSlog中回显数据。那么就代表:原网站存在XXE漏洞且payload无错误,此时就是数据无回显的问题。

img

evil2.dtd文件内容:

img

注:这段XML并没有解决数据回显的问题。

img

evils2.dtd文件内容

img

注:这段XML解决了数据回显的问题,因为将读取的文件内容交给了get.php文件实现,进而进行回显。

协议玩法

这里直接参考文章即可,下图给出了不同语言支持的伪协议,关于伪协议的更多内容,请参考文件包含。

img

XXE黑盒测试

抓包获取Content-Type或数据类型为xml时,尝试进行xml语言payload进行测试。

不管获取的Content-Type类型或数据传输类型,均可尝试修改后提交测试XXE。(提交时记得修改Content-Type类型为xml)

XXE不仅存在于数据传输,其他应用中也会存在XXE漏洞,例如Excel、SVG等。

XXE白盒测试

  • 可通过应用功能追踪代码定位审计(XXE往往出现在数据的交互中,网站当中的任何地方都有可能出现数据交互,因此这个漏洞如果根据应用功能进行追踪,非常耗时)
  • 可通过脚本特定函数搜索定位审计
  • 可通过伪协议玩法绕过相关修复等(出现漏洞后,绕过的思路)

XXE修复

img

致谢

https://www.bilibili.com/video/BV1pQ4y1s7kH/?spm_id_from=333.1007.top_right_bar_window_custom_collection.content.click

免责声明

    本博客中的内容仅供学习之用,不用于商业用途,也不可以用于任何非法用途,否则后果自负,本人不承担任何责任!
posted @   夏目^_^  阅读(21)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示