价值约700美元的GCP基础设施漏洞挖掘实录

本文详细记录了作者在漏洞赏金项目中发现Tokopedia公司GCP基础设施安全漏洞的全过程。通过开放的Jupyter Notebook服务器获取服务账户令牌,进而访问BigQuery数据库中的敏感支付信息。文章包含完整的时间线和具体技术细节,展示了云环境配置错误可能导致严重数据泄露的风险。

你的GCP基础设施值多少钱?…大约700美元 [漏洞赏金]

漏洞赏金故事 #漏洞赏金技巧

一个已修复但未获得赏金的故事…

时间线:

  • 2019年10月21日:报告漏洞
  • 2019年10月23日:确认为严重漏洞
  • 2019年10月30日:确认为已修复
  • 2019年11月12日:确定赏金金额(1000万印尼盾≈700美元)
  • 2019年11月16日:提供支付信息
  • 2020年3月13日:仍未收到赏金-发布博客文章
  • 2020年3月19日:收到565.86美元赏金

技术细节

许多应用程序都提供"Shell即服务"功能,Jupyter Notebook就是其中之一,它既支持代码运行也提供终端功能。

当我在Shodan上搜索易受攻击的系统时,发现了一个属于Tokopedia的开放Jupyter Notebook服务器。

发现的漏洞

开放的Jupyter Notebook服务器 Open Jupyter notebook server

GCP服务账户密钥泄露 在之前的文章中,我讨论过发现GCP密钥后的应对措施。这个问题在人们将GCP服务账户密钥留在文件夹中时尤其严重。

在这个案例中,服务令牌虽然是Base64编码的,但很容易解码。

服务账户令牌Base64解码 ![service account token b64 decoded]

该令牌也出现在某个Jupyter Notebook的错误输出中。

渗透过程

我使用终端进行基本探查以确定所有者身份: ![终端探查截图]

在确认该系统属于某个有漏洞赏金项目的公司后,我认为可以证明访问权限和影响范围。

根据GCP官方文档,获得服务账户令牌后,就可以通过认证并访问该令牌有权使用的服务。

在GCP计算主机上获得shell的一个便利之处是,所有GCP工具都已安装并"开箱即用"。实际上我不需要从外部主机进行任何操作,可以直接从Jupyter终端内部SSH到其他主机。

数据访问证据

BigQuery表访问

1
bq ls --format=prettyjson --project_id tokopedia-970

账单数据表 ![Dat billing table yo]

支付数据表 ![I love payments tables]

公司背景调查

在调查过程中,我搜索了这家公司的信息:https://en.wikipedia.org/wiki/Tokopedia

最值得注意的是:

  • 2017年,Tokopedia从中国电商巨头阿里巴巴获得11亿美元投资
  • 2018年,该公司再次从阿里巴巴和日本软银获得11亿美元融资
  • 公司估值约为70亿美元

后续处理

作为负责任的安全研究人员,我报告了该漏洞并被评定为严重等级。团队修复速度很快,在修复前响应也相当及时。但修复后,花费了两周时间才获得赏金信息。我及时提供了支付信息,但始终未收到赏金,且团队停止回应我的询问。

安全建议

解决方案:

  1. 在受限权限容器中运行(不能防范云元数据攻击)
  2. 新版本Jupyter Notebook支持密码保护访问,应启用此功能而非完全开放

发布时间:2020年3月13日 晚上10:10 标签:漏洞赏金, 开发运维, 渗透测试

comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计