挖洞经验 | 从谷歌防灾地图服务发现Google.org的XSS和Clickjacking漏洞
字数 1419 2025-08-18 11:38:53
谷歌防灾地图服务XSS与Clickjacking漏洞分析教学文档
1. 漏洞背景
1.1 谷歌防灾地图服务简介
- 正式名称:Google Crisis Map
- 创建时间:2012年
- 托管域名:google.org
- 功能:帮助用户发现和预警重要灾害活动
- 特点:Web架构更新缓慢,访问量较少
1.2 服务访问方式
- 主页面:https://google.org/crisismap
- 创建地图URL:https://google.org/crisismap/.maps
2. 漏洞发现过程
2.1 服务功能分析
- 默认地图展示:任何用户可查看三幅默认地图
- 地图创建权限:
- Gmail账号无法创建地图
- 需要GSuite账户或其他非gmail.com后缀邮箱登录
- 地图创建流程:
- 点击"Create Map"按钮
- 添加图层(Add layer)功能
2.2 XSS漏洞发现
-
漏洞入口点:图层对话框中的"Source URL"字段
-
前端验证机制:
- 检查URL格式:必须包含http://或https://协议
- 错误提示:"Invalid URL - please include a protocol (e.g. http:// or https://)"
-
绕过验证方法:
- 使用BurpSuite拦截POST请求
- 修改请求中的Source URL值为javascript:alert(document.domain)
- 请求成功提交到后端
-
触发条件:
- 用户点击"Download KML"按钮
- 成功执行JavaScript代码
2.3 Clickjacking漏洞发现
- 漏洞表现:响应头中缺少X-Frame-Options设置
- 利用方式:
- 将漏洞页面嵌入iframe
- 使用CSS技术伪装点击区域
3. 漏洞技术分析
3.1 XSS漏洞技术细节
- 漏洞类型:存储型XSS
- 根本原因:
- 前端验证不彻底
- 后端缺乏对Source URL的二次验证
- 攻击流程:
1. 攻击者创建地图并添加恶意图层 2. 拦截请求修改Source URL为JavaScript代码 3. 发布地图获取公开URL 4. 受害者访问地图并点击下载按钮 5. XSS代码在google.org域下执行
3.2 Clickjacking漏洞技术细节
- 漏洞原理:页面可被嵌入第三方网站iframe
- 利用技术:
- 使用透明iframe覆盖诱骗点击区域
- 结合XSS实现更复杂的攻击
4. 漏洞利用演示
4.1 XSS利用POC
<!-- 创建恶意地图 -->
POST https://google.org/crisismap/.api/maps/1234
<!-- 修改请求体中的Source URL为 -->
javascript:alert(document.domain)
4.2 Clickjacking利用POC
<style>
iframe {
position: absolute;
top: 0;
left: 0;
width: 5000px;
height: 5000px;
opacity: 0.5;
z-index: 2;
}
.click-me {
position: absolute;
top: 100px;
left: 100px;
z-index: 1;
background: black;
color: white;
padding: 10px;
}
</style>
<div class="click-me">点击我查看重要信息</div>
<iframe src="https://google.org/crisismap/example.com/test"></iframe>
5. 漏洞修复建议
5.1 XSS防御措施
- 前后端双重验证:
- 前端:严格验证URL格式
- 后端:使用白名单验证协议和域名
- 输入过滤:
- 禁止javascript:等危险协议
- 对特殊字符进行转义
5.2 Clickjacking防御措施
- HTTP头设置:
- X-Frame-Options: DENY
- Content-Security-Policy: frame-ancestors 'none'
- Frame Busting代码:
if (top != self) top.location = self.location;
6. 漏洞挖掘经验总结
-
测试重点区域:
- 老旧系统(更新缓慢)
- 低访问量服务
- 用户输入点(特别是URL字段)
-
测试方法:
- 检查前端验证是否可绕过
- 分析HTTP头安全性设置
- 组合利用多个漏洞(XSS+Clickjacking)
-
漏洞危害最大化:
- 考虑漏洞的实际利用场景
- 尝试将多个漏洞串联利用
- 评估漏洞在目标域名下的影响范围
7. 漏洞上报时间线
- 漏洞发现与验证
- 编写详细报告
- 提交谷歌安全团队
- 漏洞修复与确认
注:具体上报进程未在原文中详细说明,实际测试应遵循各公司的漏洞披露政策