挖洞经验 | 价值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. 测试方法

  1. Payload构造

    • 使用基本XSS测试向量:"><svg/onload=alert(document.domain)>"@x.y
    • 该Payload利用了SVG标签和onload事件处理器
  2. 测试步骤

    • 在"转化功能名称"字段输入XSS Payload
    • 观察到多次alert弹窗(初步判断为self-XSS)
    • 完成表单填写并保存
    • 在新标签页中打开保存后的链接验证持久性
  3. 验证技巧

    • 初始测试时设置浏览器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. 漏洞成因

  1. 输入未充分过滤

    • 转化名称字段未对HTML特殊字符进行适当转义
    • 未验证或清理SVG标签和事件处理器
  2. 输出未充分编码

    • 服务器在返回数据时未对用户输入进行HTML编码
    • 客户端渲染时直接插入了未处理的用户输入
  3. 上下文处理不当

    • 未考虑用户输入在不同上下文(HTML、属性、JavaScript等)中的安全性

漏洞利用影响

  1. 潜在危害

    • 窃取用户会话cookie
    • 重定向到恶意网站
    • 执行任意JavaScript代码
    • 针对AdWords用户的钓鱼攻击
  2. 受影响范围

    • 所有访问受影响页面的用户
    • 跨浏览器兼容(Chrome和Firefox已验证)

漏洞修复建议

  1. 输入验证

    • 白名单验证允许的字符
    • 对特殊字符(<, >, ", ', /等)进行过滤或转义
  2. 输出编码

    • 根据输出上下文(HTML、属性、URL等)使用适当的编码
    • 使用安全的API自动处理编码(如React的JSX)
  3. 内容安全策略(CSP)

    • 实施严格的CSP限制内联脚本执行
    • 禁用不必要的内联事件处理器
  4. 框架防护

    • 使用现代框架(如Angular、React)的自动XSS防护
    • 避免直接使用innerHTML等不安全API

漏洞报告技巧

  1. 报告内容

    • 清晰的漏洞描述
    • 重现步骤(step-by-step)
    • 影响分析
    • 修复建议
  2. 证据提供

    • 截图证明
    • 视频演示(本案例中使用了小视频)
    • 可重现的测试用例
  3. 时间安排

    • 选择非高峰时段进行测试
    • 发现漏洞后立即报告

漏洞奖励经验

  1. 奖励金额:3133.7美元
  2. 额外荣誉:列入谷歌名人堂(Hall of Fame)
  3. 奖励因素
    • 漏洞严重程度(存储型XSS)
    • 受影响产品重要性(AdWords)
    • 报告质量(清晰、可重现)

学习要点总结

  1. 测试策略

    • 从业务关键功能入手(如转化跟踪)
    • 关注用户输入点(名称、描述等字段)
  2. Payload设计

    • 考虑不同上下文环境
    • 尝试绕过常见过滤机制
  3. 验证方法

    • 跨标签页验证
    • 跨浏览器验证
    • 持久性验证
  4. 心态调整

    • 不轻视看似简单的漏洞(如self-XSS可能发展为存储型)
    • 坚持系统化测试

进阶练习建议

  1. 测试其他谷歌产品

    • Google Analytics
    • Google Cloud Console
    • Google Workspace
  2. 尝试更复杂Payload

    • 绕过WAF的Payload
    • 结合DOM Clobbering等技术
  3. 自动化测试

    • 使用工具扫描常见XSS
    • 编写自定义fuzzing脚本
  4. 研究防御机制

    • 分析现代Web框架的XSS防护
    • 学习CSP策略设计

通过本案例的系统学习,安全研究人员可以掌握存储型XSS的挖掘方法、分析技巧和报告流程,提升Web应用安全测试能力。

谷歌存储型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 Payload 观察到多次alert弹窗(初步判断为self-XSS) 完成表单填写并保存 在新标签页中打开保存后的链接验证持久性 验证技巧 : 初始测试时设置浏览器XSS阻拦以避免干扰 通过复制链接到新标签页验证存储型特性 跨浏览器测试(Chrome和Firefox) 漏洞技术分析 1. 漏洞类型 存储型XSS :Payload被永久存储在服务器端,每次访问受影响页面都会执行 DOM-based XSS :利用SVG标签和onload事件处理器触发 2. Payload解析 "> :闭合前端的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应用安全测试能力。