挖洞经验 | 价值3133.7美金的谷歌(Google)存储型XSS漏洞
字数 1972 2025-08-18 11:37:42
谷歌存储型XSS漏洞挖掘与分析教学文档
漏洞概述
本教学文档基于2018年发现的Google AdWords平台存储型XSS漏洞案例,该漏洞价值3133.7美金。这是一个典型的存储型跨站脚本攻击(Stored XSS)漏洞,攻击者能够将恶意脚本永久存储在目标服务器上,当其他用户访问受影响页面时,脚本会自动执行。
漏洞发现过程详解
1. 目标选择
- 目标平台:Google AdWords(谷歌广告服务产品)
- 选择原因:
- 谷歌产品安全标准高,发现漏洞更具挑战性
- 谷歌有完善的漏洞奖励计划
- AdWords作为商业产品,可能包含复杂功能点
2. 测试入口点
- 具体路径:
https://adwords.google.com/aw/conversions - 功能说明:广告转化跟踪功能,用于跟踪用户与广告互动后的行为(如购买、注册等)
3. 测试方法
-
Payload构造:
- 使用基本XSS测试向量:
"><svg/onload=alert(document.domain)>"@x.y - 该Payload利用了SVG标签和onload事件处理器
- 使用基本XSS测试向量:
-
测试步骤:
- 在"转化功能名称"字段输入XSS Payload
- 观察到多次alert弹窗(初步判断为self-XSS)
- 完成表单填写并保存
- 在新标签页中打开保存后的链接验证持久性
-
验证技巧:
- 初始测试时设置浏览器XSS阻拦以避免干扰
- 通过复制链接到新标签页验证存储型特性
- 跨浏览器测试(Chrome和Firefox)
漏洞技术分析
1. 漏洞类型
- 存储型XSS:Payload被永久存储在服务器端,每次访问受影响页面都会执行
- DOM-based XSS:利用SVG标签和onload事件处理器触发
2. Payload解析
"><svg/onload=alert(document.domain)>"@x.y
">:闭合前端的HTML标签或属性<svg/onload=alert(document.domain)>:SVG标签+onload事件处理器"@x.y:使整个字符串符合电子邮件格式(可能绕过某些验证)
3. 漏洞成因
-
输入未充分过滤:
- 转化名称字段未对HTML特殊字符进行适当转义
- 未验证或清理SVG标签和事件处理器
-
输出未充分编码:
- 服务器在返回数据时未对用户输入进行HTML编码
- 客户端渲染时直接插入了未处理的用户输入
-
上下文处理不当:
- 未考虑用户输入在不同上下文(HTML、属性、JavaScript等)中的安全性
漏洞利用影响
-
潜在危害:
- 窃取用户会话cookie
- 重定向到恶意网站
- 执行任意JavaScript代码
- 针对AdWords用户的钓鱼攻击
-
受影响范围:
- 所有访问受影响页面的用户
- 跨浏览器兼容(Chrome和Firefox已验证)
漏洞修复建议
-
输入验证:
- 白名单验证允许的字符
- 对特殊字符(<, >, ", ', /等)进行过滤或转义
-
输出编码:
- 根据输出上下文(HTML、属性、URL等)使用适当的编码
- 使用安全的API自动处理编码(如React的JSX)
-
内容安全策略(CSP):
- 实施严格的CSP限制内联脚本执行
- 禁用不必要的内联事件处理器
-
框架防护:
- 使用现代框架(如Angular、React)的自动XSS防护
- 避免直接使用innerHTML等不安全API
漏洞报告技巧
-
报告内容:
- 清晰的漏洞描述
- 重现步骤(step-by-step)
- 影响分析
- 修复建议
-
证据提供:
- 截图证明
- 视频演示(本案例中使用了小视频)
- 可重现的测试用例
-
时间安排:
- 选择非高峰时段进行测试
- 发现漏洞后立即报告
漏洞奖励经验
- 奖励金额:3133.7美元
- 额外荣誉:列入谷歌名人堂(Hall of Fame)
- 奖励因素:
- 漏洞严重程度(存储型XSS)
- 受影响产品重要性(AdWords)
- 报告质量(清晰、可重现)
学习要点总结
-
测试策略:
- 从业务关键功能入手(如转化跟踪)
- 关注用户输入点(名称、描述等字段)
-
Payload设计:
- 考虑不同上下文环境
- 尝试绕过常见过滤机制
-
验证方法:
- 跨标签页验证
- 跨浏览器验证
- 持久性验证
-
心态调整:
- 不轻视看似简单的漏洞(如self-XSS可能发展为存储型)
- 坚持系统化测试
进阶练习建议
-
测试其他谷歌产品:
- Google Analytics
- Google Cloud Console
- Google Workspace
-
尝试更复杂Payload:
- 绕过WAF的Payload
- 结合DOM Clobbering等技术
-
自动化测试:
- 使用工具扫描常见XSS
- 编写自定义fuzzing脚本
-
研究防御机制:
- 分析现代Web框架的XSS防护
- 学习CSP策略设计
通过本案例的系统学习,安全研究人员可以掌握存储型XSS的挖掘方法、分析技巧和报告流程,提升Web应用安全测试能力。