挖洞经验 | 看我如何发现Google生产网络SSRF漏洞获取$13337赏金
字数 1691 2025-08-18 11:37:28
Google生产网络SSRF漏洞挖掘与分析教学文档
1. 漏洞背景
1.1 相关技术介绍
Google Sites:谷歌协作平台,在线协作编辑工具,用于创建企业内网、项目管理跟踪、外延网等定制网站。
Google Caja服务:
- 解析HTML/JavaScript文件
- 消除敏感内容(如iframe、object标签和document.cookie等)
- 客户端HTML标记解析和安全过滤
- 服务端处理远程资源获取(如
<script src="xxx">)
2. 漏洞发现过程
2.1 初始测试
- 尝试在自建服务器托管JavaScript文件并嵌入Google Sites
- 发现Google Sites的Caja服务只允许调用Google自有资源(如google.com、gstatic.com)
- 外部资源(如facebook.com)无法访问
2.2 SSRF漏洞发现
- 在Google App Engine上托管JavaScript文件
- 将该文件URL作为外部资源引用配置到Google Sites
- 检查App Engine日志,发现请求来自内部IP:10.x.x.201
- 直接使用内部IP作为JavaScript调用链接测试
3. 漏洞利用细节
3.1 测试请求与响应
-
请求
http://10.x.x.201/:- 响应"Borglet"服务器状态监控页面
- 揭示Google内部大规模集群管理系统Borg
-
请求
http://10.x.x.1/:- 另一个"Borglet"服务器状态监控页面
-
请求
http://10.x.x.1/getstatus:- 包含进程任务权限和参数等详细信息
- 响应数据量达1MB,包含大量敏感信息
3.2 获取的内部信息
服务器硬件信息:
- 英特尔Haswell 2.30GHz 72核CPU
- 250GB内存(使用率70%)
- 2TB硬盘(仅使用15GB)
运行的服务:
- 视频编码
- Gmail
- 广告服务
架构元素:
- MapReduce
- BitTable
- Flume
- GFS
技术栈:
- 主要使用Java
- 容器技术(Docker、VM虚拟机)
- 视频处理使用Gvisor
系统用户:
gmail@prod.google.comlegal-discovery@prod.google.com(具有auth.impersonation.impersonateNormalUser权限)
4. 漏洞影响分析
-
信息泄露:
- 内部网络基础设施详情
- 服务器配置和运行状态
- 应用程序参数和查询
-
潜在风险:
- 可能访问数百甚至数千个内部web应用
- Borglet状态监控页面未经认证即可访问
-
与Kubernetes对比:
- Kubernetes的状态监控页面需要认证
- Borg系统监控页面无认证
5. 漏洞修复与响应
-
时间线:
- 2018年5月12日(周六)上报,初始分类为P3
- 5月14日(周一)提升为P0,后调整为P1
- 同日晚上修复,相关服务端被删除
-
奖励:
- 获得$13,337赏金
- 被认定为未授权文件访问级别的高危漏洞
6. 教学要点总结
6.1 关键测试步骤
- 寻找服务端获取外部资源的功能点
- 测试对内部资源的访问能力
- 检查请求来源IP(日志分析)
- 尝试直接访问内部网络资源
6.2 漏洞挖掘技巧
-
关注异常行为:
- 服务限制只访问特定域(如仅限公司自有域名)
- 可能是内部网络访问控制的旁路
-
SSRF测试方法:
- 尝试访问已知内部IP
- 测试常见内部服务端口
- 检查响应内容是否包含内部系统信息
-
信息收集:
- 记录所有获取的内部系统详情
- 分析架构和技术栈信息
6.3 注意事项
- 严格遵守漏洞披露政策
- 限制测试范围,避免过度探测
- 及时上报发现的高危漏洞
- 详细记录测试过程和结果
7. 防御建议
-
服务端:
- 严格限制服务访问内部资源的能力
- 对内部服务实施认证机制
- 监控异常的内部网络访问
-
客户端:
- 验证用户提供的URL
- 实施白名单机制限制可访问域
- 过滤敏感信息响应
-
架构:
- 隔离内部监控和管理界面
- 实施网络分段,限制横向移动
- 定期审计内部服务暴露面