XXE漏洞小结

xxe漏洞:

XXE 漏洞全称XML External Entity Injection,即 xml 外部实体注入漏洞,XXE 漏洞发生在应用程序解析 XML 输入时,没有禁止外部实体的加载,导致可加载恶意外部文件,造成文件读取、命令执行、内网端口扫描、攻击内网网站等危害。

XML又是个什么东西?

XML的全名叫做可扩展性标记语言,文件的后缀名,w3c推举的数据传输格式。

我们要明确的一点是XML被创造出来的目的是用来传输和存储数据的而不是展示数据。

展示数据我们用什么?我们用的是超文本标记语言--------html

与html不同的是XML的标签必须自定义,就是每个标签的名字都是我们自己起的,

,但是写标签名的时候一定要有含义。

除了xml,我们还需要知道一个东西,就是dtd文档,文档类型定义

dtd的作用:可定义合法的XML文档构建模块,文件后缀名为.dtd,它可以单独写一个文档,也可以内嵌在xml文件中。

内部声明格式

内部声明

                       //xml声明

    //定义了note元素,并且note元素下面有4个子元素

            PCDATA 的意思是被解析的字符数据(parsed character data)。不想被解析 #CDATA

                

]>                                   //从,是DTD文档的定义

George

John

Reminder

Don't forget the meeting!

                                     //后面这部分就是XML文件内容

外部声明格式

实例

George

John

Reminder

Don't forget the meeting!

note.dtd:

    //定义了note元素,并且note元素下面有4个子元素

              //定义了子元素to,后面的(#PCDATA)意思是to元素里面的字符串内容不会被解析

元素:

通过类别关键词 ANY 声明的元素,可包含任何可解析数据的组合:

实例:

实体

实体是用来定义普通文本的变量。实体引用是对实体的引用。

还记得这个 ------     这个就是HTML 自带的实体引用。实体引用,说的不就是它本来是个实体,然后被我们引用了嘛。这个"无折行空格"实体在 HTML 中被用于在某个文档中插入一个额外的空格。

格式:   -------变量

实例

DTD 实例:

&writer;©right;

外部实体声明

实例

XML example:

&writer;©right;

xxe-labs for php

XXE漏洞小结_第1张图片

开启BP抓包

发现Content-type为xml联想到xxe漏洞

XXE漏洞小结_第2张图片

转入重放模块并注入xml代码(payload)

XXE漏洞小结_第3张图片

查看返回的结果

XXE漏洞小结_第4张图片

vulhub php_xxe:

vulhub  php_xxe

XXE漏洞小结_第5张图片

libxml版本小于2.9.0所以存在xxe漏洞,现在我们需要找的就是注入点;

根据提示:

XXE漏洞小结_第6张图片

访问上述的三个php文件:

XXE漏洞小结_第7张图片

XXE漏洞小结_第8张图片

发现php文件是以xml形式传输传输数据

打开burpsuite:开启代理模式抓包

在数据包中放入payload

XXE漏洞小结_第9张图片

可以看到passwd文件被带出

XXE漏洞小结_第10张图片

XXE漏洞小结_第11张图片

实验结束

关于xxe漏洞,必须要明确的是xml是用来传输数据和存储数据的一种形式,而不是显示数据的一种形式,DTD可以规范xml的结构。

你可能感兴趣的:(安全,web安全,php)