挖洞经验 | 看我如何发现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 初始测试

  1. 尝试在自建服务器托管JavaScript文件并嵌入Google Sites
  2. 发现Google Sites的Caja服务只允许调用Google自有资源(如google.com、gstatic.com)
  3. 外部资源(如facebook.com)无法访问

2.2 SSRF漏洞发现

  1. 在Google App Engine上托管JavaScript文件
  2. 将该文件URL作为外部资源引用配置到Google Sites
  3. 检查App Engine日志,发现请求来自内部IP:10.x.x.201
  4. 直接使用内部IP作为JavaScript调用链接测试

3. 漏洞利用细节

3.1 测试请求与响应

  1. 请求http://10.x.x.201/

    • 响应"Borglet"服务器状态监控页面
    • 揭示Google内部大规模集群管理系统Borg
  2. 请求http://10.x.x.1/

    • 另一个"Borglet"服务器状态监控页面
  3. 请求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.com
  • legal-discovery@prod.google.com(具有auth.impersonation.impersonateNormalUser权限)

4. 漏洞影响分析

  1. 信息泄露

    • 内部网络基础设施详情
    • 服务器配置和运行状态
    • 应用程序参数和查询
  2. 潜在风险

    • 可能访问数百甚至数千个内部web应用
    • Borglet状态监控页面未经认证即可访问
  3. 与Kubernetes对比

    • Kubernetes的状态监控页面需要认证
    • Borg系统监控页面无认证

5. 漏洞修复与响应

  1. 时间线

    • 2018年5月12日(周六)上报,初始分类为P3
    • 5月14日(周一)提升为P0,后调整为P1
    • 同日晚上修复,相关服务端被删除
  2. 奖励

    • 获得$13,337赏金
    • 被认定为未授权文件访问级别的高危漏洞

6. 教学要点总结

6.1 关键测试步骤

  1. 寻找服务端获取外部资源的功能点
  2. 测试对内部资源的访问能力
  3. 检查请求来源IP(日志分析)
  4. 尝试直接访问内部网络资源

6.2 漏洞挖掘技巧

  1. 关注异常行为

    • 服务限制只访问特定域(如仅限公司自有域名)
    • 可能是内部网络访问控制的旁路
  2. SSRF测试方法

    • 尝试访问已知内部IP
    • 测试常见内部服务端口
    • 检查响应内容是否包含内部系统信息
  3. 信息收集

    • 记录所有获取的内部系统详情
    • 分析架构和技术栈信息

6.3 注意事项

  1. 严格遵守漏洞披露政策
  2. 限制测试范围,避免过度探测
  3. 及时上报发现的高危漏洞
  4. 详细记录测试过程和结果

7. 防御建议

  1. 服务端

    • 严格限制服务访问内部资源的能力
    • 对内部服务实施认证机制
    • 监控异常的内部网络访问
  2. 客户端

    • 验证用户提供的URL
    • 实施白名单机制限制可访问域
    • 过滤敏感信息响应
  3. 架构

    • 隔离内部监控和管理界面
    • 实施网络分段,限制横向移动
    • 定期审计内部服务暴露面
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.com legal-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 实施白名单机制限制可访问域 过滤敏感信息响应 架构 : 隔离内部监控和管理界面 实施网络分段,限制横向移动 定期审计内部服务暴露面