Hangouts Chat漏洞分析:从开放式重定向到代码执行
字数 1630 2025-08-29 08:32:24
Hangouts Chat漏洞分析:从开放式重定向到代码执行
漏洞背景
Hangouts Chat是Google推出的类似Slack的即时通讯工具,提供Web版和基于Electron的桌面版应用程序。本教学文档将详细分析该应用中发现的从开放式重定向到潜在代码执行的安全漏洞。
漏洞发现过程
1. 初始观察
- Hangouts Chat桌面应用是基于Electron框架构建的
- 本质上是一个封装了
https://chat.google.com网页的应用程序 - 关键安全缺陷:Electron应用没有浏览器地址栏,用户无法验证当前访问的域名
2. 重定向漏洞发现
初步尝试:
- 直接插入外部链接会在默认浏览器中打开,无法在应用内重定向
突破点发现:
- 观察到
chat.google.com的某些URL会返回3xx重定向 - 例如访问不存在的URL
https://chat.google.com/test123会被重定向到https://chat.google.com/u/0/?hasBeenRedirected=true
验证方法:
- 使用Burp Suite设置匹配/替换规则
- 将
hasBeenRedirected=true重写为攻击者控制的域名(如sekurak.pl) - 成功在Hangouts Chat窗口内显示任意网站
3. 开放式重定向漏洞利用
漏洞位置:
https://chat.google.com/accounts下的任何URL都会被重定向到https://accounts.google.com- 例如:
https://chat.google.com/accounts/random-url→https://accounts.google.com/random-url
利用链构建:
- 利用
accounts.google.com上已知的开放式重定向漏洞(@teh_h3ck披露) - 关键重定向点:
/_ah/conflogin端点
最终利用URL:
https://chat.google.com/accounts/ServiceLogin?continue=https://appengine.google.com/_ah/conflogin?continue=http://bentkowski.info/&service=ah
4. 攻击场景
- 攻击者可以构造看似合法的Google登录页面
- 由于没有地址栏,用户无法辨别真伪
- 可实现高可信度的钓鱼攻击
漏洞升级路径
虽然原始发现者未能实现代码执行,但安全研究员Matt Austin(@mattaustin)指出该漏洞可升级为代码执行:
- Electron安全模型缺陷:Electron应用通常具有Node.js集成
- XSS到RCE:如果能注入恶意JavaScript,可能通过Electron API访问系统资源
- 潜在利用方式:
- 通过重定向加载恶意JavaScript
- 利用Electron的
webview或nodeIntegration特性 - 调用系统命令或访问文件系统
防御措施
对于开发者:
-
Electron应用安全建议:
- 禁用
nodeIntegration或限制其使用 - 使用
contextIsolation隔离网页和Node.js环境 - 实现自定义协议处理而非HTTP/HTTPS
- 添加地址栏或明确的域名指示器
- 禁用
-
重定向防护:
- 严格验证重定向目标
- 禁止重定向到外部域
- 实现重定向白名单
对于用户:
- 及时更新应用程序
- 对Electron应用内的敏感操作保持警惕
- 使用Web版本而非桌面应用进行敏感操作
漏洞影响与赏金
- 漏洞严重性:高危
- Google漏洞赏金:$7,500
- 影响版本:补丁发布前的所有桌面版Hangouts Chat
总结
本案例展示了Electron应用特有的安全风险:
- 开放式重定向在传统Web应用中风险较低,但在无地址栏的Electron应用中危害显著增大
- 重定向漏洞可能成为更严重攻击(如代码执行)的跳板
- 开发Electron应用时需要特别关注安全设计,不能简单移植Web应用的安全模型
该漏洞链从简单的开放式重定向开始,最终可能升级为完整的远程代码执行,充分说明了安全漏洞的连锁效应和潜在危害。