GCP基础设施安全漏洞:价值700美元的Bug Bounty故事

本文详细描述了作者在Shodan上发现Tokopedia开放的Jupyter Notebook服务器,通过解码服务账户令牌获得GCP访问权限,进而探索BigQuery数据表的过程。文章涉及云安全配置错误、权限提升和漏洞报告时间线,最终获得565.86美元赏金。

Bug Bounty故事 #bugbountytips

一个已修复但未支付赏金的故事…

时间线:

  • 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服务账户密钥留在文件夹中时,这一点尤其重要。

当你将服务令牌留在文件夹中供所有人查找/使用时:

When you leave your service token in the folder for all to find/use

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

service account token b64 decoded

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

It was also in the error output of one of the jupyter notebooks

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

I had used the terminal to do some basic poking around to find the owner

一旦确定它属于有bug bounty计划的人,我认为证明访问和影响是可以的。

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

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

Bigquery表 o_0

[+] Bigquery访问 [+]

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

Bigquery tables o_0

数据账单表:

Dat billing table yo

我喜欢支付表:

I love payments tables

在这个过程中,我搜索了这家公司是谁。https://en.wikipedia.org/wiki/Tokopedia

最有趣的是…

2017年,Tokopedia从中国电子商务巨头阿里巴巴获得了11亿美元的投资。[7] 2018年,该公司又获得了由中国电子商务巨头阿里巴巴集团和日本软银集团领投的11亿美元融资轮[8],使其估值达到约70亿美元。[9]

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

解决方案:

在有限权限容器中运行(不能防止云元数据攻击)

新版本的Jupyter notebook允许密码保护访问。这样做而不是向所有人开放。

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