云存储漏洞个人看来均为配置不当所造成的漏洞
对象存储
云服务商 | 对象存储名称 | 简称 |
---|---|---|
阿里云 | Object Storage Service | OSS |
腾讯云 | Cloud Object Storage | COS |
字节云 | Torch Object Storage | TOS |
华为云 | Object Storage Service | OBS |
亚马逊云 | Simple Storage Service | S3 |
谷歌云 | Google Cloud Storage | GCS |
微软云 | Azure Blob Storage | Blob |
字节云存储桶策略配置
基本配置
桶策略支持指定被授权用户,即设置哪些用户可以访问该桶。授权方式主要包括以下两种:
- 通过指定主账号 ID 或子账号 ID,限制仅通过身份认证的指定账户才能执行该桶的策略操作。
- 所有用户(包含匿名用户)表示用户可以不通过身份认证即可执行当前桶策略,可能导致数据存储安全风险。
存储桶操作总览
四项通用配置,通用配置权限高于桶动作和对象动作权限:
操作名称 | 说明 |
---|---|
* | 通配符,表示该资源能进行的所有操作 |
Get* | 表示该资源能进行的所有的获取操作 |
Put* | 表示该资源能进行的所有设置动作 |
List* | 表示该资源能进行的所有的列举操作 |
二十五项桶动作配置(桶权限配置):
分类 | 操作名称 | 说明 |
---|---|---|
桶操作 | ListBucket | 列举桶内对象 |
桶操作 | HeadBucket | 判断桶是否存在,获取桶元数据 |
桶操作 | DeleteBucket | 删除存储桶 |
桶 ACL | GetBucketAcl | 获取桶访问控制列表的相关信息 |
桶 ACL | PutBucketAcl | 设置桶的访问控制列表 |
桶策略 | GetBucketPolicy | 获取桶策略 |
桶策略 | PutBucketPolicy | 设置桶策略,拥有此权限的用户可以任意更改桶策略,并可以通过此权限获取其他权限 |
桶策略 | DeleteBucketPolicy | 删除桶策略 |
桶标签 | GetBucketTagging | 获取桶标签相关信息 |
桶标签 | PutBucketTagging | 设置桶标签 |
生命周期规则 | GetLifecycleConfiguration | 获取桶生命周期规则 |
生命周期规则 | PutLifecycleConfiguration | 设置桶生命周期规则 |
桶版本控制 | GetBucketVersioning | 获取桶多版本的相关信息 |
桶版本控制 | PutBucketVersioning | 设置多版本 |
桶版本控制 | ListBucketVersions | 列举桶内多版本对象 |
跨域访问 CORS | GetBucketCORS | 获取跨域访问规则 |
跨域访问 CORS | PutBucketCORS | 设置跨域访问规则 |
消息通知 | GetBucketNotification | 设置桶事件通知 |
消息通知 | PutBucketNotification | 获取桶事件通知 |
图片样式 | PutBucketImageStyle | 设置桶图片样式 |
图片样式 | GetBucketImageStyle | 获取桶图片样式 |
图片样式 | ListBucketImageStyle | 列举桶图片样式 |
图片样式 | DeleteBucketImageStyle | 删除桶图片样式 |
桶存储策略 | PutBucketStoragePolicy | 设置桶默认存储类别 |
其他 | ListBucketMultipartUploads | 列出所有分片上传任务 |
十三项对象动作配置
分类 | 操作名称 | 说明 |
---|---|---|
对象操作 | GetObject | 获取存储桶中的对象 |
对象操作 | PutObject | 上传新对象到存储桶 |
对象操作 | DeleteObject | 删除存储桶中的对象 |
对象操作 | RestoreObject | 恢复已归档的对象 |
对象ACL | GetObjectAcl | 获取对象的访问控制列表 |
对象ACL | PutObjectAcl | 设置对象的访问控制列表 |
对象版本 | GetObjectVersion | 获取指定版本的对象 |
对象版本 | DeleteObjectVersion | 删除指定版本的对象 |
对象标签 | GetObjectTagging | 获取对象的标签 |
对象标签 | PutObjectTagging | 设置对象的标签 |
对象标签 | DeleteObjectTagging | 删除对象的标签 |
其他 | AbortMultipartUpload | 终止分段上传过程 |
其他 | ListMultipartUploadParts | 列出某个分段上传中的所有分段 |
常见报错提示:
NoSuchBucket-该存储桶不存在
1 | C:\Users\25091>curl https://t2sts.tos-cn-beijing.volces.com/ |
AccessDenied-表示无权限访问当前存储桶
1 | C:\Users\25091>curl https: //ceshi.tos-cn-beijing.volces.com/ |
通用配置-List*
当前仅开启通用配置中的List*权限,未手动勾选桶动作和对象动作配置,但此时桶内所有关于List的策略均可操作,例如:ListBucket、ListBucketVersions、ListBucketImageStyle等
除List操作外其余操作均无法完成,例如拼接Key去访问桶内对象,提示AccessDenied
1 | C:\Users\25091>curl https://t1sts.tos-cn-beijing.volces.com/ |
通用配置-Get*
当前开启通用配置中的Get*权限,未手动勾选桶动作和对象动作配置,但此时桶内所有关于Get的策略均可操作,例如:GetBucketAcl、GetObject
获取存储桶对象
1 | C:\Users\25091>curl -O https://t1sts.tos-cn-beijing.volces.com/Background.jpg |
获取存储桶访问控制列表
1 | C:\Users\25091>curl https: //t1sts.tos-cn-beijing.volces.com/?acl |
ListBucket-列举桶内对象
未开启
1 | C:\Users\25091>curl https://t1sts.tos-cn-beijing.volces.com/ |
开启该权限后
1 | C:\Users\25091>curl https://t1sts.tos-cn-beijing.volces.com/ |
ListBucketVersions-列举桶内多版本对象
可参考文档:
1 | C:\Users\25091>curl "https://t1sts.tos-cn-beijing.volces.com/?versions&max-keys=10" |