【技术解读】【CloudSec】Cross-tenant Cloud Function compromise via storage bucket squatting
原文地址:
https://lf.lc/vrp/168991979/
漏洞概述
作者在原文中,介绍了他是如何在GCP中,通过抢注存储桶的方式接管其它租户的Cloud Function。
漏洞利用过程
1、攻击者创建一个存储桶,桶名格式为:gcf-sources-<numberic-project-id>-<location>
,所以这里需要知道目标用户的Project ID,且此时目标用户在其region
(区域)还没有创建任何的Cloud Function;
2、攻击者给这个存储桶配置为所有用户可访问(如storage.buckets.list、storage.objects.get、storage.objects.list 和 storage.objects.create权限)
3、此时目标用户创建一个自己的Cloud Function,后端便会将Cloud Function的代码上传到攻击者前面创建的这个存储桶。因为是攻击者创建的存储桶,所以攻击者就可以查看、下载、修改目标用户的Cloud Function的代码,攻击者可往其中写入后门。
4、所以只要目标用户没注意到自己的Cloud Function代码被修改了,直接运行自己的Cloud Function,那么它的Cloud Function服务就会被攻击者接管。
启发
挖bounty,和技术水平并没有必然联系。对于很多bug bounty新手,甚至是那些平时代码审计挖高危漏洞挺厉害的人,如果不是一个资深的bug bounty hunter,则经常会存在一个认知盲区。很多从攻防视角,实战性不是很强的漏洞,可能他们并不会觉得是漏洞,特别是那些存在利用条件,甚至是条件比较苛刻的,所以在挖bounty的时候,很可能会有意或无意看不到一些漏洞。但是在bug bounty里,尤其是国外的用户量大的厂商,他们会认的可能性还是比较高的。
这样的话,那么在bug bounty的时候,你越是对目标产品有全方位的了解,你就越可能挖到漏洞。
比方说,一个产品,它可能有不同的业务场景,不同的账号等等,那不同的业务场景、不同的账号的情况,你的威胁分析必须覆盖到,否则很有可能与bounty失之交臂哦!!!