我是如何挖掘Uber的XSS漏洞并绕过CSP的
字数 1181 2025-08-27 12:33:23
Uber XSS漏洞挖掘与CSP绕过技术分析
漏洞发现背景
作者最初在Uber的子域partners.uber.com上寻找开放式重定向漏洞,发现了一个可重定向的URL:
https://partners.uber.com/carrier-discounts/att/redirect?href=http://www.wireless.att.com/
但Uber认为开放式重定向漏洞在99%的情况下影响不大,除非能结合其他漏洞(如窃取OAuth令牌)。
XSS漏洞挖掘过程
目标选择
作者转向研究Uber的邀请链接,这是Uber最知名的URL类型之一。常见的邀请链接格式:
https://www.uber.com/a/join?exp_hvp=1&invite_code=bq6ew1w9ue
https://partners.uber.com/p3/referrals/ms?i=bq6ew1w9ue
参数发现
通过Google Dork搜索(site:partners.uber.com),作者发现了一个带有额外参数的邀请链接:
https://partners.uber.com/p3/referrals/ms?i=bq6ew1w9ue&m=ANNIVERSARY&v=1
其中v参数表示司机工作年限。
XSS注入尝试
原始代码:
content="static/images/milestones/anniversary/anniversary_1.png"/>
注入有效载荷后:
content="static/images/milestones/anniversary/anniversary_1">.png"/>
虽然注入成功,但由于CSP(内容安全策略)的限制,弹窗未出现。
CSP分析与绕过
Uber的CSP策略
Uber为partners.uber.com设置的CSP头部中,script-src部分包含:
'self' 'unsafe-inline' 'nonce-9f4b94bf-a195-4d8c-b474-879ae6d1d471'
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
关键点:https://*.uber.com被列入白名单。
绕过思路
- 寻找Uber子域中提供JSONP回调功能的端点
- 参考其他研究者的经验(如"DOM XSS - auth.uber.com"文章)
- 发现
mkto.uber.com(Marketo营销自动化平台)子域
最终利用
构造的XSS有效载荷:
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弹窗。
时间线
- 2018-08-03:提交漏洞报告
- 2018-08-07:状态改为"Triaged"
- 2018-08-27:漏洞修复
- 2018-08-30:获得$2,000奖金
- 2018-09-04:有限披露给Hackerone
关键经验总结
-
不要预设限制:不要因为某个URL知名就假设它没有漏洞,知名系统同样可能存在安全问题。
-
研究他人成果:阅读其他研究者的漏洞报告和技术文章,可以获取重要线索和思路。本例中参考了关于marketo.com的绕过方法。
-
全面资产发现:使用Google Dork(
site:partners.uber.com)和VirusTotal等工具全面发现目标资产。 -
CSP绕过策略:
- 仔细分析CSP白名单
- 寻找允许的域中提供JSONP回调的端点
- 利用白名单中的第三方服务(如marketo)执行脚本
-
参数测试:不要只测试明显参数,本例中
v参数最初看起来无害,但最终成为注入点。 -
组合漏洞:虽然单个开放式重定向可能被认为低风险,但结合其他漏洞可能产生更大影响。
技术要点备忘
- CSP绕过核心:当
*.uber.com在白名单中,寻找子域中可被利用的JSONP端点 - 有效载荷构造:闭合原有HTML标签后插入恶意脚本
- 漏洞验证:通过
alert(document.domain)确认执行上下文 - 资产发现工具:Google Dork、VirusTotal是发现子域的重要工具