
COS安全认证方式永久密钥AK/SKAK:secretId SK:SecretKey客户端利用SK为密钥把请求方法/资源路径/时间等进行加密算出签名然后传输明文AK和签名给服务端服务端拿到AK查询数据库内对应的SK然后利用同样的SK和同样的加密方法生成签名然后比对是否一致STS临时密钥后端利用AKSK调用STS接口assumeroleSTS接受到请求先看是否有扮演权限assumerole然后生成TmpSecretIdTmpSecretKey,SessionToken,并指定权限和过期的时间然后就和AKSK的认证方式一样但是这里会带上sessiontoken预签名URL使用临时或者永久的AKSK去生成带签名的URLURL自带身份和有效期就可以直接利用这个链接去访问文件ACL是什么ACL是访问控制列表他指定了谁能读/写这个桶或者文件例如private/pubilc-read/pubilc-read-write其中GetobjectACL是COS的api用于查询当个文件的ACL而GetBuckeytACL是用于查询整个bucket的ACL存在什么样子的安全风险以及如何去测试XSS直接上传HTML,SVG等常见的XSS payload的文件或者在上传文件到COS的时候修改content-type为text/html这个时候下载下来的文件就会携带这个content-type响应头浏览器就会解析这个文件为html文件如果通过CDN访问的时候就可以匿名配置否则需要签名文件操作修改文件名为COS已有文件看是否可以获取或者进行文件覆盖通过修改文件名为根目录(/)带有路径穿越(…/),看是否可以获取/修改到其他目录文件预签名相关漏洞如果没有签名HOST那么就可以预签名另一个子账号如果没有签名x-cos-acl,那么就可以在文件上传的时候通过添加x-cos-acl:public-read公开读的请求头改变这个权限