XXE定义
如果Web应用的脚本代码没有限制XML引入外部实体,从而导致用户可以插入一个外部实体并且其中的内容会被服务器端执行,插入的代码可能导致任意文件读取、系统命令执行、内网端口探测、攻击内网网站等危害。
XML介绍
XML指可扩展标记语言,被设计为传输和存储数据,xml文档包括xml声明、DTD文档类型定义(可选)、文档元素、其焦点是数据的内容,其把数据从HMTL分离,是独立于软件和硬件的信息传输工具
XML的主要两个用途:
1.配置文件:层次分明,结构清晰,校验方便,便于拓展
2.在不同的系统之间交换数据
<?xml version="1.0" encoding="ISO-8859-1"?> //第一行为xml的声明,定义了xml的版本和使用的编码
<note> //文档的根元素,下面四行为根元素下的四个子元素
<to>大黄</to>
<from>大壮</from>
<heading>村头集合</heading>
<body>有妹子!</body>
</note>
"阳光,开朗,大男孩"
<person name="阳光" character="开朗" result="大男孩">
<person>
<name value="阳光" />
<character value="开朗">
<result value="大男孩">
</person>
json
{
“name”:"阳光",
"chatacter":"开朗",
"result": "大男孩"
}
xml格式校验
DTD定义
DTD全称Thedocument type definition,即是文档类型定义,可定义合法的XML文档构建模块。它使用一系列合法的元素来定义文档的结构。DTD可被成行地声明于XML文档中,也可作为一个外部引用。控制XML的格式规范。
DTD作用:
1.通过DTD,每一个XML文件均可以携带一个自身相关的描述
2.验证数据
3.交换数据
内部实体声明:(相当于变量)
<!ENTITY 实体名称"实体的值">
外部的实体声明:
<!ENTITY 实体名称SYSTEM "URI">
XXE的危害
1.文件读取
2.内网端口扫描
3.命令执行
带外测试:
1.是不是payload写错了
2.是不是存在这个漏洞
3.有存在但是无回显
4.是否存在这个文件
如果:关闭了回显但是带外测试成功。
远程文件窃取:
1.读本地服务器上的文件
2.远程加载了恶意DTD文件
3.攻击者的服务器 开启 接收内容并写出文件