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发送内部请求
设置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)