我是如何绕过Uber的CSP防御成功XSS的?

栏目: 编程工具 · 发布时间: 6年前

内容简介:大家好!在开始正式的内容之前,请允许我做个简单的自我介绍。首先,我要说明的是我不是什么安全研究人员/安全工程师,确切的来说我是一名安全的爱好者,这始于两年前的Uber。我喜欢接触新的事物,并且每天都在努力提高自己。我也很乐意与分享我学到的东西(每周都会更新哦),因为我确信“分享即是关怀”。虽然,现在在赏金计划中我已不是新人了,但在安全面前我永远是新手。好了,话不多说让我们步入正题吧!这次,我打算在Uber的子域上挖掘一些“开放重定向”漏洞。虽然,我知道Uber并不将“开放重定向(Open Redirect

大家好!在开始正式的内容之前,请允许我做个简单的自我介绍。首先,我要说明的是我不是什么安全研究人员/安全工程师,确切的来说我是一名安全的爱好者,这始于两年前的Uber。我喜欢接触新的事物,并且每天都在努力提高自己。我也很乐意与分享我学到的东西(每周都会更新哦),因为我确信“分享即是关怀”。虽然,现在在赏金计划中我已不是新人了,但在安全面前我永远是新手。好了,话不多说让我们步入正题吧!

背景

这次,我打算在Uber的子域上挖掘一些“开放重定向”漏洞。虽然,我知道Uber并不将“开放重定向(Open Redirect)”视为漏洞。但我想,如果将它与其它漏洞联系起来,也许能导致帐户接管或其它什么更严重的安全问题呢?我立刻将想法付诸于了行动。当我在partners.uber.com上寻找端点时,以下URL引起了我的注意:

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

这个URL是我在一个论坛中看到的,之后我使用Google dorks也找到了一个类似的URL。那么,它是否受开放重定向漏洞的影响呢?答案是肯定的!接下来我要做的就是,在登录部分找到一个漏洞来组合利用它们。但很不幸,我找了很长的一段时间都没有任何的发现。对于开放重定向的问题Uber方面回应如下:

“99%的开放重定向具有低安全性影响, 对于影响较大的罕见情况,例如窃取oauth令牌,我们仍希望能再见到它们。”

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

so,他们修好了吧。是他们自己发现的还是有人报告的?我不知道,也不想知道。这让我感到非常的沮丧,但我很快从沮丧当中走了出来。既然这个点被堵死了,那让我们来找找XSS。

如果我问你“Uber的哪个URL你最眼熟”,你的答案可能是邀请链接。你可以在任何地方看到这些链接,例如论坛帖子,Twitter,Facebook,Instagram等。

以下是一个邀请链接:

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

我尝试检查了XSS,但并没有成功:(

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

上面这个链接具有相同的邀请码,如果你点击它它将重定向到其他URL,但这里它为什么不检查其他参数呢?我决定再次使用dorks进行搜索。

site:partners.uber.com

通过dorks搜索我找到了一个数量庞大的邀请链接列表。我要做的就是找到另一个参数,很幸运我找到了一个!

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

看起来很酷,但XSS在哪里呢?“v”参数显示的是他/她作为优步司机工作的年限。我尝试在这个参数注入一些XSS payload,但并没有XSS弹窗,接着我检查了源码。

原始代码:

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

注入payload后:

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

正如你所看到的,我们的payload并未被过滤,但同时也没有发生XSS弹窗。根据我以往的经验,这种情况是因为启用了内容安全策略(CSP)。什么是CSP? 正如Netsparker博客当中所描述的那样:

内容安全策略(CSP)标准,是一种有选择地指定应在Web应用程序中加载哪些内容的方法。这可以通过使用随机数或散列将特定来源列入白名单来完成“。

因此,只要找到处在白名单之中的域,我们就可以绕过CSP。我们来检查下Uber的partner.uber.com的CSP标头。这里的内容有点长,因此我只向大家展示了“script-src”之后的部分:

script-src ‘self’ ‘unsafe-inline’ ‘nonce-9f4b94bf-a195–4d8c-b474–879ae6d1d471’ ‘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”的博客,大家有空可以去翻翻他的文章:

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

在他的这篇文章中他成功绕过了CSP,并且CSP允许他从* .marketo.com获得一些他想要的东西。

在这当中他借助dorks找到了一个回调参数,并且你可以看到效果不错!

我是如何绕过Uber的CSP防御成功XSS的?

看完这篇文章后,我访问了Virustotal并检查了Uber的子域。其中一个以mkto开头的子域引起了我的注意。“mkto”会是marketo的简称吗?

我是如何绕过Uber的CSP防御成功XSS的?

是的,果然没错!

当我访问mkto.uber.com,它将我重定向到了“ https://app-ab19.marketo.com/index.php ”,这也验证了我的猜测。现在我们尝试用它来绕过CSP。我使用payload创建了以下链接:

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>

我是如何绕过Uber的CSP防御成功XSS的?

可以看到,成功绕过CSP并触发了XSS弹窗!

时间线

2018.8.3 向优步提交漏洞报告
2018.8.7 将状态改为“Triaged”
2018.8.22 发送并询问有关流程的其他信息
2018.8.23 优步回复:“谢谢@mefkan!我们已将该信息传递给内部团队。”
2018.8.27 漏洞已修复
2018.8.30 奖励$2,000
2018.4.3 在Hackerone有限披露

经验总结

1.不要觉得一个URL非常常用就不可能存在漏洞,我敢肯定你因此已经错过了很多bug。

2.多翻看其他一些技术牛人的文章,在其中你可能会得到你想要的答案或新的灵感。

3.不要因为一次的失败就放弃,可能答案就在你的下一步。

*参考来源: medium ,FB小编secist编译,转载请注明来自FreeBuf.COM


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Text Processing in Python

Text Processing in Python

David Mertz / Addison-Wesley Professional / 2003-6-12 / USD 54.99

Text Processing in Python describes techniques for manipulation of text using the Python programming language. At the broadest level, text processing is simply taking textual information and doing som......一起来看看 《Text Processing in Python》 这本书的介绍吧!

CSS 压缩/解压工具
CSS 压缩/解压工具

在线压缩/解压 CSS 代码

JSON 在线解析
JSON 在线解析

在线 JSON 格式化工具

HSV CMYK 转换工具
HSV CMYK 转换工具

HSV CMYK互换工具