1、XXE简介
XXE全称是XML External Entity,也就是XML外部实体注入。
如果系统允许攻击者利用XML调用外部实体,那么攻击这就可以在调用外部实体时构造恶意内容,就可能导致任意文件读取、系统命令执行、内网端口探测、攻击内网网站等危害。
2、可能的场景
很多的网站都会对xml文件进行解析,解析的时候都有可能出现可用的XXE漏洞,从而被攻击利用,攻击的方法基于实体中可以使用的协议。
像XML文件作为配置文件的系统(spring、Struts2等)、文档结构说明文件(PDF、RSS等)、图片格式文件(SVG header),soap通信通信格式,甚至有道题目的参数为Yiruma处理中也涉及到了对xml文件的解析,此外,网上有一些在线XML格式化工具,还有一ctf题目中的将csv文件转化为xml文件的功能,都可能涉及到不安全的XML文件解析从而存在攻击点。
3、XXE的来源—XML文档结构&DTD文档类型定义
想要知道什么是XXE漏洞,需要先对XML文档进行学习。
xml文档结构
XML文档有三个部分:
<!--第一部分:XML申明-->
<?xml version="1.0"?>
<!--第二部分:文档类型定义-->
<!DOCTYPE note [ <!--定义此文档是 note 类型的文档-->
<!ELEMENT note (to,from,heading,body)> <!--定义note元素有四个元素-->
<!ELEMENT to (#PCDATA)> <!--定义to元素为”#PCDATA”类型-->
<!ELEMENT from (#PCDATA)> <!--定义from元素为”#PCDATA”类型-->
<!ELEMENT