11.19 XXE
XXE
全称XML External Entity Injection,XML外部实体注入攻击。
XML是用于标记电子文件使其具有结构性的标记语言,可以用来标记数据、定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言。文档结构包括XML声明、DTD文档类型定义(可选)、文档元素。
Html 标签固定 ,结构:html声明、头部、body 。为了显示数据
.xml 标签不固定,用户可自定义,结构:XML声明、DTD、文档元素。为了传输数据
<!DOCTYPE 变量名 [定义的元素]>
<!ELEMENT 变量名 (定义元素的名称)>
xml实体
在一个甚至多个XML文档中频繁使用某一条数据,可以先定义一个这条数据的别名,即一个ENTITY,然后在这些文档需要他的地方调用他。
分为外部实体、内部实体(来源区分)
XMl定义了两种ENTITY,一种在XML文档中使用,另一种作为参数在DTD文件中使用。
定义好的ENTITY在文档中通过“&实体名;”来使用。
可以把实体当作XML语言的变量。
实体类型:普通实体、外部实体、参数实体、外部参数实体
普通实体用&,参数实体用%
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE reset [
<!ENTITY % a SYSTEM "http://127.0.0.1/test.dtd">
%a;
]>
<reset>
<login>&xxe;</login>
<secret>Any bugs?</secret>
</reset>
XXE危害
使用file读取敏感文件:配置文件、/etc/passwd等
内网服务探测:http://10.10.10.10:80 /22/3306.....来探测端口
DOS攻击,递归调用,占用系统资源
无回显(盲型xxe)
使用数据带外技术(OOB),使用类似DNSlog的一些平台