前不久,Uber终于开放了它的漏洞奖励计划,并鼓励白帽子们展开对Uber在线服务的漏洞挖掘。今天,随着漏洞盒子一起,看看这几个逻辑漏洞形成的“组合拳”吧。
1信息收集
首先我们先查看了Uber公司授权检测的目标。可以发现要检测的范围还是很广的,基本包含了Uber公司全部的在线服务。
https://*.uber.com/
http://*.uberinternal.com/
http://petition.uber.org
http://ubermovement.com
iPhone Rider Application
iPhone Partner Application
Android Rider Application
Android Partner Application
首先我先对uber的主域名做了一个暴力枚举。这一步主要是收集Uber公司域名下的全部二级域名信息。扫描到了几个开放的二级域名后,我又使用Nmap对全部的二级域名列表做扫描,主要是查看这些二级域名的网页标题,页面内容等。
分析完APP后我发现Uber地图的终端是采用JD-GUI来实现的,然后我采用了MobSF来对Uber的APP做一个安全监测。
以上收集的这些信息已经足够我们做一个常规的安全监测。
2漏洞挖掘
枚举优惠价代码
凡是使用Uber的人都知道Uber运行用户输入优惠券来抵押一部分车费,我查看了riders.uber.com后发现,这个页面上有一个付款界面。在付款界面里面又有一个优惠券代码的API接口。
在实际测试过程当中我发现Uber公司并没有对这个API接口采取一些防枚举措施,这样导致黑客可以无限枚举优惠券代码。
在实际枚举的过程当中我们发现以下三个返回数据包的长度代表不同的含义。
如果数据长度是1951,那么说明优惠券是有效的
如果数据长度是1931 ,那么说明优惠券并不存在
如果数据长度是1921 ,那么说明优惠券已经过期
并且Uber公司允许用户自定义自己的优惠码,凡是自定义的优惠码开头都会有一个uber字样,这样导致黑客可以枚举出超过1000个优惠券代码。
除了优惠券代码的枚举以外,我们还发现Uber公司之前推出的ERH优惠券代码可以重复添加。这个优惠券代码有100美元,原本已经被其他人使用过了,但是在枚举的过程当中我们发现不管这个代码有没有被使用过,只要你枚举到都可以使用。
然后我们联系了Uber公司,把这个漏洞提交给他们。
2016年3月23日 – 漏洞上报给Uber公司
2016年3月23日 – Uber开始审阅漏洞
2016年3月24日 – 我们更新了漏洞详情
2016年3月24日 – Uber公司继续审阅漏洞
2016年4月19日 – Uber公司已经修复漏洞
2016年5月2日 – Uber公司支付赏金
使用UUID查看用户注册邮箱
在下方的图片我们可以看到这是Uber APP上的一个帮助功能。不过说实话,我们大部分人从来都不会用这个东西,就算知道它一直存在也不会去点。但是我们不用不代表一些少部分的人不会去用。
如果你用这个东西向Uber公司发送一些帮助请求,它就会回复你“我们已经收到您的请求,我们将会尽快的联系你通过<你的注册邮箱>这个邮箱。”
通过分析这个请求的数据包后我们发现有两个参数决定了我们是否可以查看他人的邮箱,这两个参数分别为x-uber-uuid和uuid。通过对Token参数的fuzz,然后改变UUID为其他人的,之后你就可以收到别人的邮箱号了。
你也许有疑问我们是怎么获得这个UUID的?UUID那么长,很难枚举到。这个我们后面再解释。
2016年3月31日 – 漏洞上报给Uber
2016年3月31日 – Uber开始审阅漏洞
2016年4月11日 – Uber开始修复漏洞
2016年4月13日 – Uber公司支付赏金
枚举用户ID和电话号码
我们一直在尝试寻找Uber公司的漏洞,但是这些漏洞往往很难发现和利用。所以我们决定用APP和WEB分别叫一次Uber。在使用的过程当中,我们截获了全部的请求,并且发现了一些有意思的东西。
当一个Uber用户尝试平摊自己打车的费用的时候,Uber的APP会读取该用户的通讯录,并且区分出谁注册过Uber,而返回的数据包中包含了太多的信息,比如Uber司机的UUID,用户的UUID等。
我们可以在这个请求的数据包中对电话号码进行枚举,随后就可以得到大批的UUID。我们就是通过这个方法来获取到UUID的!
但是不幸的是,当我们提交这个漏洞时Uber官方说漏洞提交重复了。有人在我们之前提交了这个漏洞。
2016年4月6日 – 漏洞上报给Uber
2016年4月7日 – Uber需要更多信息关于此漏洞
2016年4月7日 – 我们更新了漏洞的信息
2016年4月7日 – 漏洞提交重复,已经有人上报此漏洞
使用Uber司机APP并且无需激活
每个Uber账户都可以申请成为Uber司机,但是需要提供驾照信息,并且经过Uber官方的审核。但是我们发现一个方法可以绕过这个审核。如果你的Uber司机账户没有通过Uber官方的审核,那么你是无法使用Uber司机APP的。
这里有一个参数是allowNotActivated,如果你的账户未被激活,那么参数的值是false。
然后我们尝试把allowNotActivated中的false改成true,结果没想到我们成功的得到了Uber司机APP的访问权限。然而此时此刻我们测试的那个司机账户还未经过Uber官方的审核。
你可以看到我们成功访问的Uber司机的APP界面。
但是当我们提交这里漏洞时已经被Uber官方通知为漏洞重复提交。
2016年3月31日 – 漏洞上报给Uber官方
2016年3月31日 – Uber询问更多的漏洞细节
2016年3月31日 – 我们对漏洞细节进行补充
2016年4月7日 – Uber把该漏洞定义为重复提交,已经有人提交过该漏洞。
通过UUID查看Uber司机的历史旅程
Uber APP有一个新的功能叫做waybill。然而我们发现通过这个服务发送的数据包结合Uber司机的UUID,我们就可以知道这个司机上一次的行程信息。
但是我们是怎么获得Uber司机的UUID的呢?很简单,你先叫一次Uber服务,在司机接单后你取消这个订单,并且在取消订单的过程中抓包。在捕获的数据包里面就有Uber司机的UUID。
不仅如此,这个返回的数据包里面还包含着这个Uber司机上一次的行程信息,比如从哪里开始接单的,车上的乘客姓名,乘客数量和乘客要去的地方等。这些都在这个数据包里面。
然后再把这个waybill填写上去,你就可以看到这个司机的车牌号,车的型号,司机姓名,驾驶路线等信息。
2016年3月31日 – 上报漏洞给Uber公司
2016年4月1日 – Uber公司开始审核漏洞
2016年4月13日 – Uber公司开始修复漏洞
2016年4月18日 – Uber公司支付赏金
越权查看他人行程信息
是否还记得第三个漏洞?我们通过伪造他人的UUID来获得他们的注册邮箱地址。
下面这个数据包截图是用户查看自己的行程的请求数据包。请注意查看这个数据包中红方框的信息,有木有一种很熟悉的感觉?没错,那个就是UUID。
当我们把这个UUID替换成其他人的UUID,返回的数据包中就包含他人的行程信息。
2016年3月31日 – 上报漏洞给Uber
2016年3月31日 – Uber开始审核漏洞
2016年4月5日 – Uber开始修复漏洞
2016年4月13日 – Uber发放赏金
*本文译者:ArthurKiller,编译自integrity,文章来自FreeBuf黑客与极客(FreeBuf.COM),未经授权不可转载。
漏洞盒子VulBox
国内领先互联网安全服务商
MAKE SECURITY ENTRENCHED STILL
长按下方漏洞盒子关注我们↓↓↓
原文始发于微信公众号(漏洞盒子VulBox):获取乘客和车主的个人信息?这记Uber逻辑漏洞“组合拳”值得一看
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论