XXE漏洞
程序员文章站
2022-07-15 15:34:58
...
XXE(xml external entity injection)
一、xxe漏洞
xml外部实体注入漏洞,发生在应用程序解析xml输入时,没有禁止外部实体的加载、导致可加载恶意外部文件,造成文件读取、命令执行、内网端口扫描、攻击内网网站、发起dos攻击等危害。是XML注入的一种,普通的XML注入利用面比较狭窄,如果有的话也是逻辑类漏洞。XXE扩大了攻击面。
xxe是一种针对xml终端的实施攻击,想要实施这种攻击需要在xml的payload的包含外部实体声明,且服务器本身允许实体扩展,这样就能读取web服务器文件系统,通过unc路径访问远程文件,或者http/https连接主机
二、XML
XML用于标记电子文件使其具有结构性的标记语言,可以用来标记数据、定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言。XML文档结构包括XML声明、DTD文档类型定义(可选)、文档元素。
三、DTD
Document type definition 文档类型定义<! ELEMENT 元素名 类型>
<! ELEMENT 班级 (学生+)>
DTD文件一般和XML文件配合使用,主要是为了约束XML文件
四、例子
Payload:读取win.ini文件
<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE a [<!ENTITY b SYSTEM 'file:///c:/windows/win.ini'>]>
<students>
<student>
<w>&b;</w>
<name>wanghao</name>
<age>20</age>
</student>
</students>
请求包使用post方法
五、防御
- 使用开发语言提供的禁用外部实体的方法
(php:libxml_disable_entity_loader(true);) - 过滤用户提交的xml数据
(system和public)
上一篇: Protostar栈溢出学习