对象存储桶配置不当可查看对象列表漏洞的成因是"网站所使用的对象存储桶访问权限为共有读而非私有",在弄清这个原因之前我们先分析一下对象存储桶的权限策略
这里我拿华为云的对象存储桶来说明 华为云对象存储桶策略分为四部分,第一个是允许还是拒绝后面的操作,这个不用管,我们看下一个 这部分是选择操作的对象,有三种对象,当前账号是自己的账号或者子账号,其他账号就是其他人的id账号,匿名用户相当于所有用户 这一部分是指定操作的位置,所有对象即根目录下的所有文件都可以执行操作,指定对象的话是你创建了一个目录,然后指定这个目录进行操作 有时候我们碰到一个上传图片或者文件到存储桶的功能时,发现它只能上传到指定的目录而不能跨目录上传就是这里限制了 最后一个是执行的动作,这里我们只关注和该漏洞相关的操作,ListBucket动作 ListBucket:列举桶内对象,获取桶元数据 根据上面的分析,我们可以总结出来,造成这个漏洞的成因是对象存储桶“允许匿名用户在根目录下列举桶内对象” (从人为角度来看的话,个人观点是开发忘记了把共有权限换成了私有了,一开始配置对象存储桶的时候可能需要改为共有,这样可能方便调试配置,但配置完后可能忘记换回私有了)
其实这个漏洞的原理大部分人也都是知道的,他们也知道怎么挖这个漏洞,但是很多人提交上去却是中危甚至低危。审核说他无法获取所有存储桶的列表,我们只能查看第一页的啊。
每个云的存储桶只要允许所有用户查看桶列表的话,都可以查看所有的元数据,只是我们不知道查看下一页的参数是啥而已
这个是华为云官方列举桶内对象的详细文档,可以查看剩下的列表参数就是marker,我们看文档里面给出的描述:列举桶内对象列表时,指定一个标识符,从该标识符以后按字典顺序返回对象列表。
当该对象存储桶的列表数量超过1000的时候,我们想要看后面的列表,我们只要访问”xxx.com?marker=第1000个标识符”就可以查看了
这里我把列表长度设定为4,只能查看4个列表(默认是1000,这里我设定为4,模拟一下) 这时候我想查看5.jpg的话 访问xx.com?marker=<key>名字 它就会从4.jpg开始列出接下来的4个列表名
国内大部分的存储桶都是用这个参数
华为云 https://support.huaweicloud.com/api-obs/obs_04_0022.html 阿里云 https://help.aliyun.com/document_detail/31965.html 百度云 https://cloud.baidu.com/doc/BOS/s/Gkkp8dvlo 腾讯云 也是marker,实战过,官方文档没找到
亚马逊云 亚马逊的没碰到过,不过国外好像都是用命令行来检验的 可以下载aws命令来判断对方存储桶是否可以匿名上传删除访问存储桶 相关文章链接: https://aws.amazon.com/tw/cli/ https://infosecwriteups.com/s3-bucket-misconfigured-access-controls-to-critical-vulnerability-6b535e3df9a5 https://infosecwriteups.com/bugbounty-aws-s3-added-to-my-bucket-list-f68dd7d0d1ce
真实案例 某物流平台上传身份证营业执照对象存储桶配置不当可查看所有用户企业的敏感图片 抓包可以看到是上传到存储桶,然后访问其根目录 加上marker=<key>就可以访问剩下的 本人菜鸟一枚,如果上面有错希望大佬指正。
太强了师傅
YYDS
Tql!师傅带带我吧
大师傅YYDS 这系列希望连载
师傅tql 来个连载
如果上传的被随机重命名了怎么查看其它的