我是如何挖掘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被列入白名单。

绕过思路

  1. 寻找Uber子域中提供JSONP回调功能的端点
  2. 参考其他研究者的经验(如"DOM XSS - auth.uber.com"文章)
  3. 发现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

关键经验总结

  1. 不要预设限制:不要因为某个URL知名就假设它没有漏洞,知名系统同样可能存在安全问题。

  2. 研究他人成果:阅读其他研究者的漏洞报告和技术文章,可以获取重要线索和思路。本例中参考了关于marketo.com的绕过方法。

  3. 全面资产发现:使用Google Dork(site:partners.uber.com)和VirusTotal等工具全面发现目标资产。

  4. CSP绕过策略

    • 仔细分析CSP白名单
    • 寻找允许的域中提供JSONP回调的端点
    • 利用白名单中的第三方服务(如marketo)执行脚本
  5. 参数测试:不要只测试明显参数,本例中v参数最初看起来无害,但最终成为注入点。

  6. 组合漏洞:虽然单个开放式重定向可能被认为低风险,但结合其他漏洞可能产生更大影响。

技术要点备忘

  • CSP绕过核心:当*.uber.com在白名单中,寻找子域中可被利用的JSONP端点
  • 有效载荷构造:闭合原有HTML标签后插入恶意脚本
  • 漏洞验证:通过alert(document.domain)确认执行上下文
  • 资产发现工具:Google Dork、VirusTotal是发现子域的重要工具
Uber XSS漏洞挖掘与CSP绕过技术分析 漏洞发现背景 作者最初在Uber的子域partners.uber.com上寻找开放式重定向漏洞,发现了一个可重定向的URL: 但Uber认为开放式重定向漏洞在99%的情况下影响不大,除非能结合其他漏洞(如窃取OAuth令牌)。 XSS漏洞挖掘过程 目标选择 作者转向研究Uber的邀请链接,这是Uber最知名的URL类型之一。常见的邀请链接格式: 参数发现 通过Google Dork搜索( site:partners.uber.com ),作者发现了一个带有额外参数的邀请链接: 其中 v 参数表示司机工作年限。 XSS注入尝试 原始代码: 注入有效载荷后: 虽然注入成功,但由于CSP(内容安全策略)的限制,弹窗未出现。 CSP分析与绕过 Uber的CSP策略 Uber为partners.uber.com设置的CSP头部中, script-src 部分包含: 关键点: https://*.uber.com 被列入白名单。 绕过思路 寻找Uber子域中提供JSONP回调功能的端点 参考其他研究者的经验(如"DOM XSS - auth.uber.com"文章) 发现 mkto.uber.com (Marketo营销自动化平台)子域 最终利用 构造的XSS有效载荷: 成功触发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是发现子域的重要工具