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的一些简单用法,仅供参考:
注:上述的带外测试主要用来判断数据不回显的问题。这个问题我们可以采用DNS带外来实现。(DNSlog)
进行XXE测试的时候,很有可能会出现以下三种情况:
- 数据无回显
- payload存在错误
- 无漏洞
对于以上三种情况,我们只能逐个采用排除法来解决。可以使用DNS带外测试是否存在XXE漏洞。
如果在XXE测试时,使用DNS带外,成功在DNSlog中回显数据。那么就代表:原网站存在XXE漏洞且payload无错误,此时就是数据无回显的问题。
evil2.dtd文件内容:
注:这段XML并没有解决数据回显的问题。
evils2.dtd文件内容
注:这段XML解决了数据回显的问题,因为将读取的文件内容交给了get.php文件实现,进而进行回显。
协议玩法
这里直接参考文章即可,下图给出了不同语言支持的伪协议,关于伪协议的更多内容,请参考文件包含。
XXE黑盒测试
抓包获取Content-Type或数据类型为xml时,尝试进行xml语言payload进行测试。
不管获取的Content-Type类型或数据传输类型,均可尝试修改后提交测试XXE。(提交时记得修改Content-Type类型为xml)
XXE不仅存在于数据传输,其他应用中也会存在XXE漏洞,例如Excel、SVG等。
XXE白盒测试
- 可通过应用功能追踪代码定位审计(XXE往往出现在数据的交互中,网站当中的任何地方都有可能出现数据交互,因此这个漏洞如果根据应用功能进行追踪,非常耗时)
- 可通过脚本特定函数搜索定位审计
- 可通过伪协议玩法绕过相关修复等(出现漏洞后,绕过的思路)
XXE修复
致谢
https://www.bilibili.com/video/BV1pQ4y1s7kH/?spm_id_from=333.1007.top_right_bar_window_custom_collection.content.click
免责声明
本博客中的内容仅供学习之用,不用于商业用途,也不可以用于任何非法用途,否则后果自负,本人不承担任何责任!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现