XML外部实体注入XML External Entity Injection
如果Web应用的脚本代码没有限制XML引入外部实体,从而导致用户可以插入一个外部实体,并且其中的内容会被服务器端执行,插入的代码可能导致任意文件读取、系统命令执行、内网端口探测、攻击内网网站等危害
(一)XML
1.XML的介绍
XML 指可扩展标记语言,被设计为传输和存储数据,xml文档包括xml声明、DTD文档类型 定义(可选)、文档元素、其焦点是数据的内容,其把数据从HMTL分离,是独立于软件和 硬件的信息传输工具。XML 不会做任何事情。XML 被设计用来结构化、存储以及传输信息。
XML是对HTML的补充,是独立与硬件与软件的信息传输工具
2.XML主要两个用途
1.配置文件:层级分明 结构清晰
2.在不同的系统之间交换数据
3.通过使用几行 JavaScript 代码,您就可以读取一个外部 XML 文件,并更新您的网页的数据内容
(二)DTD
1.DTD的介绍
DTD全称Thedocument type definition,即是文档类型定义,可定义合法的XML文档构建模块。它使用一系列合法的元素来定义文档的结构。DTD可被成行地声明于XML文档中,也可作为一个外部引用。控制XML的格式规范。
2.DTD的用处
(1)通过DTD,每一个XML文件均可以携带一个自身相关的描述
(2)验证数据
(3)交换数据
(三)XXE
1.挖取XXE的特征
2.XXE的危害
1.文件读取
2.内网端口扫描
3.命令执行
带外测试:
1.是不是payload写错了
2.是不是存在这个漏洞
3.有存在但是无回显
4.是否存在这个文件
如果关闭了回显但是带外测试成功
远程文件窃取:
1.读本地服务器上的文件
2.远程加载了恶意DTD文件
3.攻击者的服务器 开启 接收内容并写出文件