挖洞经验 | 发现Google Tez的XSS漏洞($3133.7)
字数 1767 2025-08-15 21:30:47

Google Tez DOM-based XSS漏洞分析与挖掘教程

漏洞概述

本教程详细分析Google Tez(现更名为Google Pay)中发现的一个DOM-based XSS漏洞,该漏洞通过referrer_id参数实现攻击,最终获得$3133.7的漏洞赏金。

漏洞关键信息

  • 漏洞类型: DOM-based Cross-Site Scripting (XSS)
  • 影响域名: tez.google.com (现为Google Pay)
  • 漏洞参数: referrer_id
  • 赏金金额: $3133.7
  • 漏洞等级: 根据Google漏洞奖励计划,属于"客户端代码执行"类XSS漏洞

漏洞挖掘步骤详解

1. 子域名枚举

使用工具收集Google的子域名:

  • Knock Subdomain Scan: 一款子域名枚举工具
  • Sublist3r: 另一个流行的子域名发现工具

命令示例:

python knockpy.py google.com
sublist3r -d google.com

2. 目标识别

在收集到的子域名中,发现tez.google.com(Google的支付服务)存在潜在攻击面。

3. 参数分析

发现URL中包含referrer_id参数:

https://tez.google.com/?referrer_id=TEST_VALUE

使用Google搜索验证该参数的使用情况:

site:tez.google.com inurl:referrer_id=

4. 反射测试

验证referrer_id参数值是否反射到页面中:

  1. 访问https://tez.google.com/?referrer_id=TEST123
  2. 检查页面源代码或DOM,确认TEST123出现在页面中

5. XSS Payload构造

尝试插入基本的XSS测试payload:

https://tez.google.com/?referrer_id=<svg onload=confirm(document.domain)>

Payload分析:

  • <svg>: SVG HTML元素
  • onload: 事件处理属性,当SVG加载时执行
  • confirm(document.domain): 简单的JavaScript确认框,显示当前域名

6. 漏洞验证

访问构造的URL后,观察是否弹出包含tez.google.com的确认框,确认XSS执行成功。

漏洞原理分析

这是一个典型的DOM-based XSS漏洞,攻击流程如下:

  1. 用户访问包含恶意referrer_id参数的URL
  2. 网站JavaScript代码从URL中提取referrer_id
  3. 该值被不安全地插入到DOM中,未经过适当过滤或编码
  4. 浏览器解析插入的内容,执行其中的JavaScript代码

漏洞上报与处理

  1. 通过Google Vulnerability Reward Program (VRP)上报漏洞
  2. Google安全团队初步分类评估
  3. 数日后确认漏洞并确定赏金金额
  4. 漏洞修复后,研究者被列入Google名人堂致谢名单

漏洞赏金标准

根据Google漏洞奖励计划:

  • 类别: 客户端代码执行 (XSS)
  • 适用范围: 谷歌一般应用
  • 标准赏金: $3133.7

防御措施

开发者可采取以下措施防止此类漏洞:

  1. 输入验证:

    • referrer_id等URL参数进行严格格式验证
    • 使用白名单机制,只允许特定字符集
  2. 输出编码:

    • 在将用户输入插入DOM前进行HTML实体编码
    • 使用安全的DOM操作方法如textContent而非innerHTML
  3. 内容安全策略(CSP):

    • 实施严格的CSP策略,限制内联脚本执行
    • 使用noncehash机制允许可信脚本
  4. 框架保护:

    • 使用现代框架如React、Angular或Vue,它们有内置的XSS防护
    • 避免直接操作DOM

经验总结

  1. 子域名枚举是发现新攻击面的有效方法
  2. URL参数是常见的XSS攻击向量,应重点测试
  3. Google搜索技巧能快速验证参数的使用情况
  4. 简单的测试payload往往能发现严重漏洞
  5. 大公司的小型服务也可能存在高价值漏洞

扩展练习

读者可尝试以下练习加深理解:

  1. 使用类似方法测试其他Google服务的子域名
  2. 尝试构造更复杂的XSS payload,绕过可能的过滤
  3. 研究DOM-based XSS的其他常见来源(如location.hashdocument.write等)
  4. 搭建本地测试环境,模拟此类漏洞并实践防御措施

通过本案例的学习,安全研究人员可以掌握基本的DOM-based XSS挖掘技巧,了解大公司的漏洞奖励流程,并提高自身的安全研究能力。

Google Tez DOM-based XSS漏洞分析与挖掘教程 漏洞概述 本教程详细分析Google Tez(现更名为Google Pay)中发现的一个DOM-based XSS漏洞,该漏洞通过 referrer_id 参数实现攻击,最终获得$3133.7的漏洞赏金。 漏洞关键信息 漏洞类型 : DOM-based Cross-Site Scripting (XSS) 影响域名 : tez.google.com (现为Google Pay) 漏洞参数 : referrer_id 赏金金额 : $3133.7 漏洞等级 : 根据Google漏洞奖励计划,属于"客户端代码执行"类XSS漏洞 漏洞挖掘步骤详解 1. 子域名枚举 使用工具收集Google的子域名: Knock Subdomain Scan : 一款子域名枚举工具 Sublist3r : 另一个流行的子域名发现工具 命令示例 : 2. 目标识别 在收集到的子域名中,发现 tez.google.com (Google的支付服务)存在潜在攻击面。 3. 参数分析 发现URL中包含 referrer_id 参数: 使用Google搜索验证该参数的使用情况: 4. 反射测试 验证 referrer_id 参数值是否反射到页面中: 访问 https://tez.google.com/?referrer_id=TEST123 检查页面源代码或DOM,确认 TEST123 出现在页面中 5. XSS Payload构造 尝试插入基本的XSS测试payload: Payload分析 : <svg> : SVG HTML元素 onload : 事件处理属性,当SVG加载时执行 confirm(document.domain) : 简单的JavaScript确认框,显示当前域名 6. 漏洞验证 访问构造的URL后,观察是否弹出包含 tez.google.com 的确认框,确认XSS执行成功。 漏洞原理分析 这是一个典型的DOM-based XSS漏洞,攻击流程如下: 用户访问包含恶意 referrer_id 参数的URL 网站JavaScript代码从URL中提取 referrer_id 值 该值被不安全地插入到DOM中,未经过适当过滤或编码 浏览器解析插入的内容,执行其中的JavaScript代码 漏洞上报与处理 通过Google Vulnerability Reward Program (VRP)上报漏洞 Google安全团队初步分类评估 数日后确认漏洞并确定赏金金额 漏洞修复后,研究者被列入Google名人堂致谢名单 漏洞赏金标准 根据Google漏洞奖励计划: 类别 : 客户端代码执行 (XSS) 适用范围 : 谷歌一般应用 标准赏金 : $3133.7 防御措施 开发者可采取以下措施防止此类漏洞: 输入验证 : 对 referrer_id 等URL参数进行严格格式验证 使用白名单机制,只允许特定字符集 输出编码 : 在将用户输入插入DOM前进行HTML实体编码 使用安全的DOM操作方法如 textContent 而非 innerHTML 内容安全策略(CSP) : 实施严格的CSP策略,限制内联脚本执行 使用 nonce 或 hash 机制允许可信脚本 框架保护 : 使用现代框架如React、Angular或Vue,它们有内置的XSS防护 避免直接操作DOM 经验总结 子域名枚举 是发现新攻击面的有效方法 URL参数 是常见的XSS攻击向量,应重点测试 Google搜索技巧 能快速验证参数的使用情况 简单的测试payload 往往能发现严重漏洞 大公司的小型服务 也可能存在高价值漏洞 扩展练习 读者可尝试以下练习加深理解: 使用类似方法测试其他Google服务的子域名 尝试构造更复杂的XSS payload,绕过可能的过滤 研究DOM-based XSS的其他常见来源(如 location.hash 、 document.write 等) 搭建本地测试环境,模拟此类漏洞并实践防御措施 通过本案例的学习,安全研究人员可以掌握基本的DOM-based XSS挖掘技巧,了解大公司的漏洞奖励流程,并提高自身的安全研究能力。