【云安全】腾讯云COS对象存储攻防

admin 2026-04-13 07:06:44 网络安全文章 来源:ZONE.CI 全球网 0 阅读模式

文章总结: 本文分析了腾讯云COS对象存储的攻防技术,涵盖Bucket公开访问、Object遍历、爆破、接管风险、任意文件上传、凭证泄露和ACL配置等七类场景。文章指出腾讯云因存储桶命名规则可避免接管风险,但Policy权限优先级高于ACL可能导致匿名访问漏洞,同时详细列举了SecretId/SecretKey泄露途径和防护建议。 综合评分: 85 文章分类: 云安全,漏洞分析,实战经验,WEB安全,安全建设


![cover_image]()

【云安全】腾讯云COS对象存储攻防

原创

KEVIL KEVIL

火线Zone

2022年3月7日 18:09

文章首发于:

火线Zone社区(https://zone.huoxian.cn/)

01

Bucket 公开访问

腾讯云存储桶的访问权限默认为私有读写权限,且存储桶名称会带上一串时间戳:

账户中的访问策略包括用户组策略、用户策略、存储桶访问控制列表(ACL)和存储桶策略(Policy)等不同的策略类型。

当腾讯云 COS 收到请求时,首先会确认请求者身份,并验证请求者是否拥有相关权限。验证的过程包括检查用户策略、存储桶访问策略和基于资源的访问控制列表,对请求进行鉴权。

–摘自腾讯云官方文档

上图我们仅配置了存储桶访问权限,于是因为设置了私有读写,无权访问该文件,Message 为 “Access Denied.”

02

Bucket Object 遍历

如果策略中允许了Object的List操作,则在目标资源范围下,会将所有的Bucket Object显示出来,这时,Key值可以理解为文件的目录,通过拼接可获取对应的文件:

有趣的是,在腾讯云的访问策略体系中,如果存储桶访问权限为私有读写,且 Policy 权限为匿名访问,那么 Policy 权限的优先级高于存储桶访问权限。

如果控制台配置了Policy权限,默认是对所有用户生效,并且允许所有操作,这时即使存储桶访问权限配置为私有读写,匿名用户也可通过遍历Bucket Object,获取对应的文件。

03

Bucket 爆破

当访问的存储桶不存在时,Message 为 “NoSuchBucket”,通过响应包返回内容的对比,可以筛选出已存在的存储桶域名。

04

Bucket 接管

由于Bucket 接管是由于管理人员未删除指向该服务的DNS记录,攻击者创建同名Bucket进而让受害域名解析所造成的,关键在于攻击者是否可创建同名Bucket,腾讯云有特定的存储桶命名格式,即-+cos.ap-nanjing.myqcloud.com:

而appid是在控制台用时间戳随机生成的,因此无法创建同名Bucket,故不存在Bucket 接管问题:

05

任意文件上传与覆盖

由于Bucket不支持重复命名,所以当匿名用户拥有写入权限时,可通过任意文件上传对原有文件进行覆盖,通过PUT请求可上传和覆盖任意文件。

06

用户身份凭证(签名)泄露

通过 RESTful API 对对象存储(Cloud Object Storage,COS)可以发起 HTTP 匿名请求或 HTTP 签名请求。匿名请求一般用于需要公开访问的场景,例如托管静态网站;此外,绝大部分场景都需要通过签名请求完成。

签名请求相比匿名请求,多携带了一个签名值,签名是基于密钥(SecretId/SecretKey)和请求信息加密生成的字符串。SDK 会自动计算签名,您只需要在初始化用户信息时设置好密钥,无需关心签名的计算;对于通过 RESTful API 发起的请求,需要按照签名算法计算签名并添加到请求中。–摘自官方文档

代表腾讯云用户签名的参数为:SecretId/SecretKey,在开发过程中可能有如下几处操作失误会导致SecretId/SecretKey泄露,获取到SecretId/SecretKey相当于拥有了对应用户的权限,从而操控Bucket。

Github中配置文件中泄露凭证

小程序\APP反编译源码中泄露凭证

错误使用SDK泄露凭证

常见场景:代码调试时不时从服务器端获取签名字符串,而是从客户端获取硬编码的签名字符串。

官方SDK使用文档

https://cloud.tencent.com/document/product/436/8095

第三方组件配置不当导致泄露凭证

常见场景:/actuator/heapdump堆转储文件泄露SecretId/SecretKey

07

Bucket ACL 可读/写

列出Bucket Object提示无权访问:

查看Bucket的ACL配置,发现有http://cam.qcloud.com/groups/global/AllUsers下有FULL_CONTROL权限

GET /?acl HTTP/1.1Host: <BucketName-APPID>.cos.<Region>.myqcloud.comDate: GMT DateAuthorization: Auth String

官方文档中有对ACL权限配置参数的说明:https://cloud.tencent.com/document/product/436/30752#.E6.93.8D.E4.BD.9C-permission

FULL_CONTROL代表匿名用户有完全控制权限,于是在通过PUT ACL写入策略,将存储桶的访问权限配置为公有读写:

【火线Zone云安全社区群】

进群可以与技术大佬互相交流

进群有机会免费领取节假日礼品

进群可以免费观看技术分享直播

识别二维码回复【社区群】进群

【火线zone社区周激励】

2022.2.28 ~ 2022.3.6公告

【相关精选文章】

火线Zone是[火线安全平台]运营的云安全社区,内容涵盖云计算、云安全、漏洞分析、攻防等热门主题,研究讨论云安全相关技术,助力所有云上用户实现全面的安全防护。欢迎具备分享和探索精神的云上用户加入火线Zone社区,共建一个云安全优质社区!

如需转载火线Zone公众号内的文章请联系火线小助手:hxanquan(微信)

微信号

huoxian_zone

点击阅读原文,加入社区,共建一个有技术氛围的优质社区!


免责声明:

本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。

任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。

本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我

本文转载自:火线Zone KEVIL KEVIL《【云安全】腾讯云COS对象存储攻防》

情圣skill 网络安全文章

情圣skill

文章总结: 综合评分: 0 文章分类: 其他情圣skill 阿乐你好 2026年4月8日 09:22 上海免责声明:本文所载程序、技术方法仅面向合法合规的安全研
评论:0   参与:  0