挖洞经验 | 价值$7500的Google MyAccount服务端点击劫持漏洞(Clickjacking)
字数 1214 2025-08-18 11:37:49
Google MyAccount 服务端点击劫持漏洞分析报告
漏洞概述
本报告详细分析了Google MyAccount服务端存在的一个点击劫持(Clickjacking)漏洞,该漏洞允许攻击者通过精心构造的恶意页面,诱骗用户执行非预期的操作,最终导致权限提升。Google为此漏洞支付了$7,500的赏金。
漏洞发现过程
初始发现
- 研究人员最初在测试business.google.com及其子域名时发现操作会跳转到myaccount.google.com
- 发现服务端未设置X-Frame-Options响应头,理论上存在点击劫持风险
- 初步构造的iframe测试页面被Google的内容安全策略(CSP)拦截
X-Frame-Options背景
X-Frame-Options是用于防止点击劫持的关键HTTP头,有三种配置:
- DENY:完全禁止在frame中加载
- SAMEORIGIN:只允许同源frame加载
- ALLOW-FROM:允许指定源的frame加载
绕过CSP防护
绕过方法
- 原始URL包含origin参数指向business.google.com
https://myaccount.google.com/u/0/brandaccounts/group/101656179839819660704/managers?originProduct=AC&origin=https://business.google.com - 尝试修改origin参数为不存在的子域名(akugalau.business.google.com),未成功绕过
- 最终通过在origin参数中插入回车符(%0d)成功绕过:
https://myaccount.google.com/u/0/brandaccounts/group/101656179839819660704/managers?originProduct=AC&origin=https://%0d.business.google.com
漏洞利用场景
-
前提条件:
- 攻击者作为Google组成员被邀请加入
- 攻击者知晓组ID号{your-group-id}
-
攻击流程:
- 构造包含点击劫持代码的恶意页面
- 诱骗组管理员访问该页面
- 通过iframe透明层覆盖,诱使管理员执行权限提升操作
- 攻击者权限从普通成员提升为组管理者
-
潜在危害:
- 完全接管组项目
- 执行敏感操作(如修改设置、删除成员等)
漏洞时间线
| 日期 | 事件 |
|---|---|
| 8.11 | 向Google报告漏洞 |
| 8.15 | Google要求更多细节 |
| 8.21 | Google暂时无法验证漏洞 |
| 8.21 | 提交PoC视频 |
| 8.28 | Google要求补充攻击场景 |
| 9.11 | Google认可漏洞 |
| 9.25 | 收到$7,500赏金 |
防御建议
-
服务端防御:
- 设置X-Frame-Options为DENY或SAMEORIGIN
- 加强CSP策略,防止参数注入绕过
- 对origin参数进行严格验证
-
客户端防御:
- 使用现代浏览器内置的点击劫持防护
- 教育用户识别可疑页面
-
开发建议:
- 敏感操作应增加二次确认
- 实现Frame Busting代码
技术总结
该漏洞展示了即使像Google这样拥有严格安全策略的公司,也可能存在安全配置疏忽。通过精心构造的输入参数,攻击者可以绕过看似完善的安全防护(CSP)。此案例强调了安全防御需要多层次、多角度的综合防护,单一防护措施容易被绕过。