原文:https://medium.com/@efkan162/how-i-xssed-uber-and-bypassed-csp-9ae52404f4c5

前奏


我曾经在Uber的子域上寻找过开放式重定向漏洞,虽然他们并不把“Open Redirect”当作漏洞,但我想“为什么不把它与其他漏洞联合起来?也许可能导致帐户接管或其他什么威胁呢?”在这种想法的激励下,我干劲十足。在partners.uber.com上寻找相关端点时,下面这个URL引起了我的兴趣:

https://partners.uber.com/carrier-discounts/att/redirect?href=http://www.wireless.att.com/

这个URL是在一个论坛中看到的,之后,借助Google Dork搜索语法,我又找到了一个类似的URL。那么,它是否含有开放式重定向漏洞呢?是的!接下来,还有一项工作要做:在登录界面寻找另一个漏洞,以便将两种组合起来使用。为此,我鼓捣了好几个小时,不幸的是,官方认为这并没有报告的必要,按照他们的说法:

对于开放式重定向漏洞99的情况下影响都不大不过对于影响较大的那些罕见情况例如窃取oauth令牌还是具有提交价值的。”

一周后,我再次检查了这个URL,发现它已经无法正常工作了,就像现在一样,无论你输入什么http参数,它都会将你重定向到https://www.wireless.att.com

由此来看,他们已经修复好了,问题是,这是他们自己发现的,还是有人报告的呢?我不知道,也不在乎。不过,最初我可是奔着一个大目标去的,最终却败兴而归,心里确实有点不爽。好在哥是个乐天派,没过多久我的斗志很快又燃烧起来了,于是决定再次搞点事情,这次要搞的是XSS,而不是自我陶醉!

漏洞分析


如果我问你“在Uber的链接中,最知名的URL是什么”,你的答案可能是邀请链接。这些链接几乎无处不在,例如,论坛帖子、Twitter、Facebook、Instagram ......

邀请链接具有不同的URL:

https://www.uber.com/a/join?exp_hvp=1&invite_code=bq6ew1w9ue

我在其中检测XSS漏洞,但毫无发现:(

https://partners.uber.com/p3/referrals/ms?i=bq6ew1w9ue

这个怎么样? 它有相同的邀请代码,如果点击它,它将重定向到其他URL,但为什么不检查其他参数呢?

在基本的Google Dork搜索语法的帮助下,我开始对这个子域进行全面的搜索。

site:partners.uber.com

利用上面的搜素语句,可以找到一个非常庞大的邀请链接列表。我的目标是寻找其他参数,并且真的找到了一个!

https://partners.uber.com/p3/referrals/ms?i=bq6ew1w9ue&m=ANNIVERSARY&v=1

看起来的确很酷,但XSS在哪里呢? “v”参数显示的是他/她作为Uber司机工作了多少年,看起来有点像周年庆典。发现这个参数后,我就试图注入一些XSS有效载荷,但没有出现XSS弹窗,于是我查看了一下相关的源代码。

原始代码:

content=static/images/milestones/anniversary/anniversary_1.png />

注入有效载荷后:

content=static/images/milestones/anniversary/anniversary_1 ><img src=x onerror=alert(document.cookie)>.png />

正如您所看到的,这里并没有过滤措施,但同时也没有弹出XSS窗口,这就是说,我们需要考察相关的内容安全策略。什么是CSP?正如Netsparker的博客所说:

内容安全策略(CSP)标准是一种有选择地指定应该在web应用程序中加载哪些内容的方法这可以通过使用随机数或哈希值将特定域名列入白名单来实现。”

因此,只要有列入白名单的域名,我们就可以尝试使用它们来对抗CSP。请找到Uber针对partner.uber.com域名的CSP头部,它太长了,为了保持版面简洁,这里只给出“script-src”之后的部分

script-src self unsafe-inline nonce-9f4b94bf-a1954d8c-b474879ae6d1d471 self unsafe-inline https://pullo.uberinternal.com https://apis.google.com https://www.google.com https://d1a3f4spazzrp4.cloudfront.net https://*.uber.com https://rules.quantcount.com https://www.google-analytics.com https://ssl.google-analytics.com https://d3i4yxtzktqr9n.cloudfront.net https://d1a3f4spazzrp4.cloudfront.net;

首先,我检查了rules.quantcount.com并找到了json端点,但没有太多关于它的信息。对我们来说,这里有一个巨大的优势,因为它们将* uber.com列入了白名单,所以,如果我们能找到任何带有回调或任何类似功能的JSON端点,我们就能够发动XSS攻击。与此同时,我还拜读过一个名为“DOM XSS - auth.uber.com”的博客,博主“stamone”活不错,读者不妨读一读!

http://stamone-bug-bounty.blogspot.com/2017/10/dom-xss-auth14.html

看看他的文章,他也绕过了CSP,怎么样? 在他的报告中,CSP允许他从* .marketo.com提取一些东东。

实际上,他也是借助了一些基本的Google Dork搜索语法,并找到了一个回调参数,正如您看到的那样,效果的确不错。

看完这篇文章后,我访问了Virustotal网站,并检查了Uber的子域名,其中一个引起了我的注意! 什么,mkto? “mkto”是marketo的简称吗?

是的!的确如此。

导航至mkto.uber.com的时候,它会将我们重定向到

https://app-ab19.marketo.com/index.php

这绝对就是marketo。所以,接下来我们就可以用它来对抗CSP了。利用一个简单的有效载荷,我创建了如下所示的链接,一旦访问该连接,就会出现盼望已久的弹窗。

https://partners.uber.com/p3/referrals/ms?i=bq6ew1w9ue&m=ANNIVERSARY&v=1"><script src=”https://mkto.uber.com/index.php/form/getKnownLead?callback=alert(document.domain);"></script>

这次,我触发的是XSS漏洞!

时间线


[03-08-2018]向优步提交漏洞报告
[07-08-2018]将状态改为“Triaged”
[22-08-2018]发送并询问有关流程的其他信息
[23-08-2018]优步的回复:“谢谢@mefkan!我们已将该信息传递给内部团队。”
[27-08-2018]漏洞已修复
[30-08-2018] 奖励2,000美元
[03-04-2018]有限披露给Hackerone

小结


1 - 千万不要说“这是一个非常有名的URL,别指望在这里找到漏洞”。我可以保证,如果这么想的话,肯定会错过很多漏洞。

2 - 经常阅读其他人的文章,特别是正在寻找一些特别的或详细的信息的时候。不妨多花些时间用于阅读和理解文章背后的逻辑。

3 - 永不放弃,努力努力再努力,最终就会如愿以偿。

点击收藏 | 0 关注 | 1
  • 动动手指,沙发就是你的了!
登录 后跟帖