初识XXE漏洞

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

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

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

<?xml version="1..0"?>

<student>

<useername>xxx</username>

<password>yyy</password>

<address>zzz</address>

</student>

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


这一段代码,其中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抓包



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


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

    

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

如上述所说的:

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE Anything[
<!ENTITY myentity SYSTEM="file:///etc/passwd"]>

<xxx>&myentity</xxx>

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




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

漏洞证明:

0x01:首先是构造代码:

<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE root [<!ENTITY % remote SYSTEM "test">%remote;]>

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

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


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


案例二:

漏洞标题:xxx平台XXE漏洞

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

漏洞类型:WEB漏洞

漏洞等级:危漏洞

漏洞大类:XML实体注入

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

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




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值