GCP基础设施安全漏洞与700美元漏洞赏金故事

本文详细记录了作者在漏洞赏金计划中发现Tokopedia公司开放的Jupyter Notebook服务器漏洞,通过获取GCP服务账户令牌访问敏感数据的过程,包括BigQuery数据库和支付信息,最终获得700美元赏金的完整经历。

你的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美元赏金

技术细节

有许多应用程序是SAAS - Shell即服务。Jupyter Notebook就是其中之一,具有运行代码功能和终端功能。

当我在Shodan上搜索易受攻击的系统时,发现了一个属于Tokopedia的开放Jupyter Notebook。这一点起初并不明显,但通过查看截图会变得清晰。

开放的Jupyter Notebook服务器

Open Jupyter notebook server

我在之前的文章中讨论过当你在文件夹中发现GCP密钥时该怎么办。当人们将GCP服务账户密钥留在文件夹中供所有人查找/使用时,这一点尤其重要。

当你将服务令牌留在文件夹中时

service account token in folder

在这种情况下,它是base64编码的 - 但很容易修复。

base64解码后的服务账户令牌

service account token b64 decoded

它也出现在其中一个jupyter notebook的错误输出中。

token in error output

我使用终端进行了一些基本的探查以找到所有者。

terminal investigation

一旦我确认它属于一个有漏洞赏金计划的人,我认为证明访问和影响是可以的。

根据GCP博客文章,一旦你拥有服务账户令牌,你就可以验证身份并访问你的令牌有权访问的服务。

GCP身份验证

GCP authentication

在GCP计算主机上获得shell的一个方便之处是,所有GCP工具都已安装并"正常工作"。实际上我不需要从外部主机做任何事情,我能够从jupyter终端内部开始ssh到其他主机。

通过Jupyter终端访问其他主机

ssh from jupyter terminal

BigQuery表访问

![Bigquery tables o_0]

[+] 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亿美元投资。[7] 2018年,该公司再次获得由中国电商巨头阿里巴巴集团和日本软银集团领投的11亿美元融资轮,[8] 使其估值达到约70亿美元。[9]”

因此,作为一个好人™,我报告了这个问题,并被指定为严重级别。他们超级快速地修复了它,团队在修复之前相当响应。之后花了2周时间获得赏金信息,我及时提供了支付信息,但我从未收到付款,他们停止回应我的询问。

解决方案

  • 在有限权限的容器中运行(不能防止云元数据攻击)
  • 新版本的Jupyter Notebook允许密码保护访问。这样做而不是向所有人开放

标签: bugbounty, devoops, Pentesting

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