Bugbounty之谷歌云部署管理器RCE漏洞
字数 1958 2025-08-18 11:36:47

谷歌云部署管理器RCE漏洞分析与利用教学

漏洞概述

本教学文档详细分析了一个在Google Cloud Deployment Manager(谷歌云部署管理器)中发现的远程代码执行(RCE)漏洞。该漏洞允许攻击者通过特定配置向Google内部网络发送请求,可能导致权限提升和内部系统访问。漏洞发现者获得了Google漏洞奖励计划(VRP)的$31,337奖金。

前置知识

1. Google Cloud Deployment Manager

谷歌云部署管理器是一种基础架构部署服务,可以自动创建和管理Google Cloud资源。主要概念包括:

  • 类型(Type): 描述特定类型基础结构资源的属性
  • 类型提供器(Type Provider): 提供服务的可用API站点及其描述符文档
  • 资源(Resource): 表示由类型提供的单个基础结构资源的实例
  • 模板(Template): 可重用的Python或Jinja2文件,用于配置资源
  • 部署(Deployment): 资源的集合
  • 操作(Operation): 创建、修改或删除操作的记录

2. Dogfood版本

Google内部使用的测试版本,具有一些公众无法使用的功能,通常仅适用于Google员工。

3. Global Service Load Balancer (GSLB)

Google的全球服务负载平衡器,类似于内部DNS服务器和负载平衡器的混合体,可以将流量定向到内部IP地址。

漏洞发现过程

1. 初始研究

研究者首先尝试了以下方法:

  • 查找隐藏或内部的类型
  • 检查部署模板以获取异常信息
  • 尝试创建指向内网服务的类型提供器

2. 发现未记录API版本

通过Google云端控制台的指标页面,发现了两个未记录的API版本:

  • alpha版本
  • dogfood版本(内部测试版)

3. 发现关键字段googleOptions

在dogfood版本中,类型和类型提供器定义中包含一个未记录的googleOptions字段,该字段包含多个子字段:

"googleOptions": {
  "injectProject": false,
  "deleteIntent": "CREATE_OR_ACQUIRE",
  "isLocalProvider": false,
  "ownershipKind": "GOOGLE",
  "transport": "UNKNOWN_TRANSPORT_TYPE",
  "credentialType": "UNKNOWN_CREDENTIAL_TYPE",
  "gslbTarget": "",
  "descriptorUrlServerSpec": ""
}

4. 关键突破:Proto over HTTP

研究者使用Proto over HTTP(一种实验性的gRPC后备功能)对API进行逆向工程,发现了关键的transport枚举值:

  • GSLB: 将请求定向到内部Google站点
  • HARPOON: 未知功能

漏洞利用步骤

1. 创建特殊类型提供器

通过dogfood API创建类型提供器,设置以下关键参数:

{
  "name": "test-provider",
  "descriptorUrl": "https://example.com/descriptor",
  "googleOptions": {
    "transport": "GSLB",
    "gslbTarget": "blade:apphosting-admin-nightly",
    "descriptorUrlServerSpec": "blade:apphosting-admin-nightly"
  }
}

2. 利用GSLB发送内部请求

设置transportGSLB后,部署管理器会将请求发送到gslbTarget指定的内部服务,如:

  • blade:corp-issuetracker-api (对应issuetracker.corp.googleapis.com)
  • blade:apphosting-admin (Google App Engine Admin API测试环境)

3. 权限提升机制

请求会使用部署管理器服务帐户的凭证(cloud-dm-staging@prod.google.com),该帐户可能有权限访问普通服务帐户无法访问的内部服务。

漏洞影响

  1. 内部网络访问:可以向Google内部API和服务发送请求
  2. 信息泄露:可以获取内部错误信息和调试数据
  3. 潜在RCE:可能通过服务帐户权限提升获得更高权限

防御措施

Google已采取的修复措施:

  • 使gslbTargetdescriptorUrlServerSpec参数无效
  • 限制对dogfood版本的访问

时间线

  • 2020年5月7日:发现并报告漏洞
  • 2020年5月8日:确认为RCE漏洞
  • 2020年5月19日:颁发$31,337奖励
  • 2020年5月20日:漏洞修复

学习要点

  1. 关注未记录功能:API的隐藏版本和参数往往是安全研究的重点
  2. 协议逆向工程:Proto over HTTP等非标准协议可能暴露关键信息
  3. 内部命名约定:了解"dogfood"、"blade"等内部术语有助于发现漏洞
  4. 异步操作分析:注意API的异步操作可能隐藏着安全风险

扩展研究

研究者建议进一步研究:

  1. Google Cloud Deployment Manager中的其他潜在漏洞
  2. 不同API版本(v2, v2beta, alpha, dogfood)之间的差异
  3. Google内部身份验证机制(如GAIA)的潜在问题

参考资源

  1. 原文链接: https://www.ezequiel.tech/2020/05/rce-in-cloud-dm.html
  2. Google Cloud Deployment Manager文档
  3. Google漏洞奖励计划(VRP)
谷歌云部署管理器RCE漏洞分析与利用教学 漏洞概述 本教学文档详细分析了一个在Google Cloud Deployment Manager(谷歌云部署管理器)中发现的远程代码执行(RCE)漏洞。该漏洞允许攻击者通过特定配置向Google内部网络发送请求,可能导致权限提升和内部系统访问。漏洞发现者获得了Google漏洞奖励计划(VRP)的$31,337奖金。 前置知识 1. Google Cloud Deployment Manager 谷歌云部署管理器是一种基础架构部署服务,可以自动创建和管理Google Cloud资源。主要概念包括: 类型(Type) : 描述特定类型基础结构资源的属性 类型提供器(Type Provider) : 提供服务的可用API站点及其描述符文档 资源(Resource) : 表示由类型提供的单个基础结构资源的实例 模板(Template) : 可重用的Python或Jinja2文件,用于配置资源 部署(Deployment) : 资源的集合 操作(Operation) : 创建、修改或删除操作的记录 2. Dogfood版本 Google内部使用的测试版本,具有一些公众无法使用的功能,通常仅适用于Google员工。 3. Global Service Load Balancer (GSLB) Google的全球服务负载平衡器,类似于内部DNS服务器和负载平衡器的混合体,可以将流量定向到内部IP地址。 漏洞发现过程 1. 初始研究 研究者首先尝试了以下方法: 查找隐藏或内部的类型 检查部署模板以获取异常信息 尝试创建指向内网服务的类型提供器 2. 发现未记录API版本 通过Google云端控制台的指标页面,发现了两个未记录的API版本: alpha 版本 dogfood 版本(内部测试版) 3. 发现关键字段 googleOptions 在dogfood版本中,类型和类型提供器定义中包含一个未记录的 googleOptions 字段,该字段包含多个子字段: 4. 关键突破:Proto over HTTP 研究者使用Proto over HTTP(一种实验性的gRPC后备功能)对API进行逆向工程,发现了关键的 transport 枚举值: GSLB : 将请求定向到内部Google站点 HARPOON : 未知功能 漏洞利用步骤 1. 创建特殊类型提供器 通过dogfood API创建类型提供器,设置以下关键参数: 2. 利用GSLB发送内部请求 设置 transport 为 GSLB 后,部署管理器会将请求发送到 gslbTarget 指定的内部服务,如: blade:corp-issuetracker-api (对应issuetracker.corp.googleapis.com) blade:apphosting-admin (Google App Engine Admin API测试环境) 3. 权限提升机制 请求会使用部署管理器服务帐户的凭证( cloud-dm-staging@prod.google.com ),该帐户可能有权限访问普通服务帐户无法访问的内部服务。 漏洞影响 内部网络访问 :可以向Google内部API和服务发送请求 信息泄露 :可以获取内部错误信息和调试数据 潜在RCE :可能通过服务帐户权限提升获得更高权限 防御措施 Google已采取的修复措施: 使 gslbTarget 和 descriptorUrlServerSpec 参数无效 限制对dogfood版本的访问 时间线 2020年5月7日:发现并报告漏洞 2020年5月8日:确认为RCE漏洞 2020年5月19日:颁发$31,337奖励 2020年5月20日:漏洞修复 学习要点 关注未记录功能 :API的隐藏版本和参数往往是安全研究的重点 协议逆向工程 :Proto over HTTP等非标准协议可能暴露关键信息 内部命名约定 :了解"dogfood"、"blade"等内部术语有助于发现漏洞 异步操作分析 :注意API的异步操作可能隐藏着安全风险 扩展研究 研究者建议进一步研究: Google Cloud Deployment Manager中的其他潜在漏洞 不同API版本(v2, v2beta, alpha, dogfood)之间的差异 Google内部身份验证机制(如GAIA)的潜在问题 参考资源 原文链接: https://www.ezequiel.tech/2020/05/rce-in-cloud-dm.html Google Cloud Deployment Manager文档 Google漏洞奖励计划(VRP)