初识XXE漏洞

0X01:何为XXE漏洞?XXE是指xml外部实体攻击

0x02:那么xml是什么?xml实体攻击是什么?

XML百度是这样子的:可扩展 标记语言, 标准通用标记语言的子集,是一种用于标记电子文件使其具有结构性的 标记语言。
在电子计算机中,标记指 计算机所能理解的信息符号,通过此种标记,计算机之间可以处理包含各种的信息比如文章等。它可以用来标记数据、定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言。 它非常适合 万维网传输,提供统一的方法来 描述和交换独立于 应用程序或供应商的结构化数据。是Internet环境中跨平台的、依赖于内容的技术,也是当今处理分布式结构信息的有效工具。早在1998年,W3C就发布了XML1.0规范,使用它来简化Internet的文档信息传输
下面看一段简单的xml文档代码,其中‘username','password','address'被称为xml的元素

xxx

yyy

zzz

有些XML文档包含system标识符定义的“实体”,这些XML文档会在DOCTYPE头部标签中呈现。这些定义的’实体’能够访问本地或者远程的内容。比如,下面的XML文档样例就包含了XML ‘实体’。

初识XXE漏洞_第1张图片

这一段代码,其中entityex就是外部实体,我们可以通过这个参数来访问file://etc/passwd的内容,因为我们web服务器在解析xml文档的过程中,实体entityes的值会直接被替换成file://etc/passwd。关键字'SYSTEM'会告诉XML解析器,'entityes'的实体值将会从后面的URL获取,也就是我们所替换的file:///etc/passwd文件,其实这个过程就是XML实体攻击过程。

0x03:如何识别xml实体攻击漏洞?

最直接的方法就是用burp抓包,然后,修改HTTP请求方法,修改Content-Type头部字段等等,查看返回包的响应,看看应用程序是否解析了发送的内容,一旦解析了,那么有可能XXE攻击漏洞,接下来,来看一个小小的展示:

这个是测试wvs的测试点:http://testhtml5.vulnweb.com/

我们点击Login下面的Forgot Pwd?然后用burp抓包


初识XXE漏洞_第2张图片

点击repeater,我们来查看返回包

初识XXE漏洞_第3张图片

从上面我们可以看到,web应用正在解析xml的内容,接受用户特定或者自定义的输入,然后呈现给用户。为了验证,我们可以构造如下的输入:

    初识XXE漏洞_第4张图片

可以看到应用程序确实是直接解析了xml,那么如果xml文档中有一个参数是用来调用远程服务器的内容?这个参数是可控的,

如上述所说的:



&myentity

myentity通过 SYSTEM参数来实体解析远程服务器中的etc/passwd文件,导致xml外部实体攻击。


案例分析

wuyun镜像地址:http://wooyun.jozxing.cc/

在介绍案例之前,首先我普及一个概念,即wsdl这个关键词

wsdl百度搜索如下:

wsdl(网络服务描述语言)是Web Service的描述语言,它包含一系列描述某个web service的定义

wsdl元素是基于XML语法描述了与服务进行交互的的基本元素,所以有wsdl服务的地方就可能存在xxe漏洞


wuyun案例分析:1:http://wooyun.jozxing.cc/static/bugs/wooyun-2016-0205725.html

2:http://wooyun.jozxing.cc/static/bugs/wooyun-2016-0169109.html


初识XXE漏洞_第5张图片


问题点出现在:http://**.**.**.**/webservice/services/webservice?wsdl

漏洞证明:

0x01:首先是构造代码:

%remote;]>

0x02:获取系统目录,根据返回可知,当前定义的文件参数实体被引用了

初识XXE漏洞_第6张图片

0x03:这个漏洞可以说跟ssrf漏洞的利用价值一样大,可以直接各种协议来进行任意文件读取,如下:


成功获取了根目录文件(配合wvs的Web Service Editor功能)

初识XXE漏洞_第7张图片

初识XXE漏洞_第8张图片

案例二:

漏洞标题:xxx平台XXE漏洞

漏洞简要描述:xxx平台XXE漏洞

漏洞类型:WEB漏洞

漏洞等级:危漏洞

漏洞大类:XML实体注入

0x01:一般这种漏洞在使用xml的地方(用wvs能够扫描出这些点),看到了SYSTEM这个参数就有的利用了,然后采用burp抓包,构造payload进行xml实体注入。

我们这里直接用burp抓包,利用file读取文件目录,如果是root权限的话,就可以进一步读取shadows文件,数据库配置文件等等,利用价值比较大,普通权限的话我只能根据用户名来爆破ssh,ftp等等服务,或者查看能够读取的文件,进一步扩大渗透范围,暂时没有好的思路,如果有白帽子懂的进一步利用的话,可以交流一下。

初识XXE漏洞_第9张图片

初识XXE漏洞_第10张图片


你可能感兴趣的:(Web渗透测试)