介绍
腾讯云 COS(Cloud Object Storage)是一种对象存储服务,支持多种类型的数据存储,包括图片、音视频、文档、压缩包等文件格式,可以帮助个人和企业在云端存储和管理海量数据。
试用
首次开通 COS 的新用户将获得一个免费额度资源包。该免费额度资源包的类型是标准存储容量包,有效期6个月(180天),规格个人用户50 GB 或企业用户1 TB
创建存储桶
私有读写 只有该存储桶的创建者及有授权的账号才对该存储桶中的对象有读写权限,其他任何人对该存储桶中的对象都没有读写权限。存储桶访问权限默认为私有读写,推荐使用。
公有读私有写 任何人(包括匿名访问者)都对该存储桶中的对象有读权限,但只有存储桶创建者及有授权的账号才对该存储桶中的对象有写权限。
公有读写 任何人(包括匿名访问者)都对该存储桶中的对象有读权限和写权限。
创建存储桶的三种权限,OSS和COS是一致的。使用默认配置直至结束,存储桶创建成功
存储桶中上传文件Ggoodstudy1.png
私有读写权限下的状态
配置不当导致信息泄露
策略配置读操作(不含List对象)
存储桶无权限访问
策略配置含ListObject
{
"Statement": [
{
"Action": [
"name/cos:GetBucket",
"name/cos:GetBucketObjectVersions",
"name/cos:GetBucketIntelligentTiering",
"name/cos:HeadBucket",
"name/cos:ListMultipartUploads",
"name/cos:ListParts",
"name/cos:GetObject",
"name/cos:HeadObject",
"name/cos:OptionsObject"
],
"Effect": "Allow",
"Principal": {
"qcs": [
"qcs::cam::anyone:anyone"
]
},
"Resource": [
"qcs::cos:ap-nanjing:uid/1259393222:ggoodstudy-1259393222/*"
],
"Sid": "costs-1710905002000000424101-47253-2"
}
],
"version": "2.0"
}
可对存储桶内的数据进行任意读
配置不当导致任意文件上传
当访问权限为私有读写,但是策略允许任意用户上传
{
"Statement": [
{
"Action": [
"name/cos:PutObject"
],
"Effect": "Allow",
"Principal": {
"qcs": [
"qcs::cam::anyone:anyone"
]
},
"Resource": [
"qcs::cos:ap-nanjing:uid/1259393222:ggoodstudy-1259393222/*"
],
"Sid": "costs-1710905002000000424101-47253-2"
}
],
"version": "2.0"
}
Action仅允许PutObject
,对象为anyone
,会导致任意文件上传。例如上传2.html
,测试XS
<script>alert("Ggoodstudy")</script>
存储桶内已被上传2.html
下载打开文件弹窗
可利用任意文件上传对云平台管理人员钓鱼或者利用供应链投毒等。
配置不当导致获取acl策略
<Owner>
:表示存储桶的拥有者信息。
<ID>
:指定了存储桶拥有者的唯一标识符,格式为 qcs::cam::uin/<OwnerUin>:uin/<OwnerUin>
。其中,<OwnerUin>
是该存储桶拥有者的账号 ID。
<DisplayName>
:指定了存储桶拥有者的显示名称。
<AccessControlList>
:表示存储桶的访问策略列表,包含一个或多个 <Grant>
标签。
<Grantee>
:指定了被授权访问存储桶的用户、组或其他实体信息,使用 CanonicalUser 类型表示。在这个例子中,该存储桶只授权给存储桶拥有者自己(ID 和 DisplayName 相同)。
<Permission>
:指定了被授权者的权限级别,使用 FULL_CONTROL 权限表示在该存储桶上具有完全控制权限。
AK-SK泄露导致Bucket被接管
控制台->>>密钥管理->>>API密钥管理
SecretId:AKIDq1v6DG7r*******************Y0JSRwbD
SecretKey:YuAKLCuV*****************ov8E9d2
实现对COS存储桶的接管
使用接管用户登录,
登录三要素
需要绑定手机号。选择下次完善即可,并不影响接管。
关于Bucket爆破、遍历
腾讯云cos和阿里云OSS的请求域名都是各有规则,这里腾讯云
腾讯云对象存储 COS 的请求域名构成如下:
<BucketName-APPID>.cos.<Region>.myqcloud.com
其中,BucketName
为您的存储桶名称,APPID
为腾讯云账户的 APPID,Region
为存储桶所在地域。
举个例子,如果您的存储桶名称为 examplebucket
,APPID 为 1234567890
,存储桶所在地域为北京(华北),则请求域名应为:
examplebucket-1234567890.cos.ap-beijing.myqcloud.com
虽然腾讯云的状态码返回不同
但是BucketName-APPID的构成使得COS被爆破和遍历的风险基本上可以不用考虑