XXE漏洞

XXE漏洞就是XML外部实体注入,就是当xml引用外部实体并解析的时候会产生的漏洞,xml解析器去获取其中的外部资源并存储到内部实体中,攻击者可引用外部实体对目标进行文件读取、命令执行、DDOS、内网探测等。

什么是xml

1.XML 指可扩展标记语言(EXtensible Markup Language)是被设计用来传输和存储数据,而HTML则是被设计用来显示数据。

SRE实战 互联网时代守护先锋,助力企业售后服务体系运筹帷幄!一键直达领取阿里云限量特价优惠。
一个简单的xml文件包括声明、文档定义类型(DTD)、和元素。
<?xml version="1.0" encoding="UTF-8"?> 声明
<!DOCTYPE note [
    <! ENTITY name "hello"> DTD定义类型
 ]>
<note>根元素
<to>&name;</to>子元素
<from>Jani</from>
<body>Don't forget me this weekend!</body>
</note>

什么是DTD

DTD(Document Type Definition,文档类型定义)

  1)DTD是一套关于标记符的语法规则。它是XML1.0版规格的一部分,是XML文件的验证机制,属于XML文件组成的一部分。
  2)XML文件提供应用程序一个数据交换的格式,DTD正是让XML文件能够成为数据交换的标准,因为不同的公司只需定义好标准的DTD,

    各公司都能够依照DTD建立XML文件,并且进行验证,如此就可以轻易的建立标准和交换数据,这样满足了网络共享和数据交互。
  4)DTD中的所有约束都是针对 与某个标签的子标签进行约束的
(XML之DTD)[https://www.cnblogs.com/zhangyinhua/p/7586853.html#_label0]

1.DTD内部文档类型声明

引入内部的dtd 
<!DOCTYPE 根元素 [ 
      规则 
]>

<xml version="1.0"? encoding="utf-8">
<!DOCTPY 班级 [      
    <!ELEMENT 班级(学生+)>
    <!ELEMENT 学生(姓名,年龄,身高)>
    <!ELEMENT 姓名 (#PCDATA)>
    <!ELEMENT 身高 ANY>
]>
<班级>
    <学生>
        <姓名>张三</姓名>
        <身高>180</身高>
        <年龄>20</年龄>
    </学生>
</班级>

1.ELEMENT 声明元素
2.PCDATA的意思是被解析的字符数据
3.就是通过DTD来定义xml的文档类型,必须要有一个或者多个班级标签,班级标签又要有姓名、年龄、身高等子标签,然后就是姓名和年龄标签里只可以又 PCDATA的元素,身高的标签可以是任何元素。

2.DTD外部部文档类型声明

引入外部的DTD
<!DOCTYPE 根元素 SYSTEM "dtd路径">

<xml version="1.0"? encoding="utf-8">
<!DOCTPY 班级 SYSTEM "1.dtd">
<班级>
    <学生>
        <姓名>张三</姓名>
        <身高>180</身高>
        <年龄>20</年龄>
    </学生>
</班级>

//1.dtd
<!ELEMENT 班级(学生+)>
<!ELEMENT 学生(姓名,年龄,身高)>
<!ELEMENT 姓名 (#PCDATA)>
<!ELEMENT 年龄 (#PCDATA)>
<!ELEMENT 身高 ANY>

3.DTD实体

实体是用于定义引用普通文本或特殊字符的快捷方式的变量,相当于变量,但它不仅能用来存储指定的数值,它还能从本地文件或者远程网络调用相关数据。

3.1DTD内部实体的声明方式是

<! ENTITY 实体是名称 "内容">
使用&+实体名称+;来调用对应的实体如下

<xml version="1.0"? encoding="utf-8">
<!ENTITY shiti1 "hello">
<!ENTITY shiti2 "word">
<author>&shiti1;&shiti2;</author>

3.2外部实体的调用

<! ENITIY 实体名称 SYSTEM "有效的url或文件名、http、ftp或其他协议形式的内容">

SYSTEM 是让xml解析器知道这是一个外部实体,需要xml解析器去获取其中的外部资源并存储到内部实体中。(xxe漏洞的成因)
XXE漏洞 Safe 第1张

4.xxe-lab靶场

先来看看php的xxe靶场
一个登入界面
XXE漏洞 Safe 第2张
开启抓包登入一下,可以看到这很明显的xml格式
XXE漏洞 Safe 第3张
构造payload

<>

5.总结:

xxe漏洞主要运用xml外部实体可以解析外部文件的特性 才使得攻击成为可能.
<! ENTITY %shiti1 " ">

扫码关注我们
微信号:SRE实战
拒绝背锅 运筹帷幄