2026-08-06
云攻防
00
请注意,本文编写于 100 天前,最后修改于 100 天前,其中某些信息可能已经过时。

目录

📅 云服务篇 —— 对象存储(OSS)安全
一、先搞清楚几个基本概念
1.1 什么是云服务?
1.2 什么是对象存储(OSS)?
1.3 什么是 Bucket(存储桶)?
二、对象存储的安全问题 —— 权限配置不当
2.1 公共读权限 —— 文件能被任何人下载
2.2 ListObject 策略 —— 目录遍历
2.3 公共读写权限 —— 任意文件上传
三、对象存储的安全问题 —— 域名解析接管
3.1 原理:域名是怎么和 Bucket 绑定的?
3.2 漏洞怎么产生的?
3.3 如何利用 —— 接管域名!
3.4 如何判断对方绑定了 OSS?
四、对象存储的安全问题 —— AccessKey 泄漏
4.1 什么是 AccessKey?
4.2 AccessKey 常在哪里泄漏?
4.3 不同云厂商的 AccessKey 特征
4.4 拿到 AccessKey 后能做什么?
五、实战案例汇总
案例1:对象存储任意文件上传
案例2:对象存储域名劫持(Bucket 接管)
案例3:AccessKey 泄漏利用
📅云服务篇 —— 弹性计算 & 云数据库安全
一、弹性计算服务器(ECS/EC2)安全
1.1 什么是弹性计算?
1.2 什么是实例元数据服务(Metadata Service)?
1.3 元数据服务为什么危险?
二、利用 SSRF 窃取元数据 —— 经典攻击链
2.1 攻击前提
2.2 攻击步骤
2.3 拿到凭证后能做什么?
三、Capital One 银行数据泄露事件(经典案例)
四、云数据库安全
4.1 云数据库的常见安全问题
4.2 攻击思路
五、AK 控制台接管
5.1 什么是 AK 控制台接管?
5.2 如何判断临时凭证的权限?
🛡️ 防御建议汇总
对象存储(OSS)防御
弹性计算(ECS)防御
通用防御
📚 常用工具清单
📝 总结思维导图

本文整理于https://wiki.teamssix.com/ 和 【小迪安全V2024】第93~94天笔记 —— 云安全攻防:对象存储 & 弹性计算

专注于概念解析,工具利用和搭配漏洞


📅 云服务篇 —— 对象存储(OSS)安全

一、先搞清楚几个基本概念

1.1 什么是云服务?

云服务就是云厂商(阿里云、腾讯云、AWS等)提供的各种"租来的资源"。你不需要买服务器、搭机房,直接在云上买服务就能用。

1.2 什么是对象存储(OSS)?

对象存储就是一个超级网盘,专门用来存文件的。比如:

  • 网站上的图片、视频、静态资源
  • APP的用户上传的头像、文件
  • 企业的备份数据

各大云厂商的对象存储叫法不一样:

云厂商对象存储服务名
阿里云OSS(Object Storage Service)
腾讯云COS(Cloud Object Storage)
华为云OBS(Object Storage Service)
AWSS3(Simple Storage Service)
百度云BOS

💡 一句话记住:OSS = 云上的网盘,存文件用的。

1.3 什么是 Bucket(存储桶)?

Bucket 就是对象存储里的 "文件夹",但这个文件夹的名字是全球唯一的,不能重名。

Bucket 的访问地址长这样:

https://[BucketName].oss-[RegionID].aliyuncs.com

举个例子:

https://test010010.oss-cn-beijing.aliyuncs.com

这里有一个oss连接工具 ossbrowser 1.0

图片.png

二、对象存储的安全问题 —— 权限配置不当

对象存储的安全问题,80%都是因为管理员配置不当造成的。我们一个个来看:

2.1 公共读权限 —— 文件能被任何人下载

场景:管理员把 Bucket 的访问权限设成了"公共读"。

后果:

  • 任何人都能直接访问 Bucket 里的文件
  • 但不知道文件名就找不到文件(不显示目录结构)

如何判断?

  • 访问 Bucket 地址,如果看到文件列表,说明配置了 ListObject 策略
  • 如果看到 AccessDenied,说明是私有的

实战利用:

  1. 通过信息收集(JS、接口、爬虫)找到具体的文件路径
  2. 直接访问下载敏感文件

2.2 ListObject 策略 —— 目录遍历

场景:管理员不仅开了公共读,还开了 ListObject 权限。

后果:

  • 访问 Bucket 地址,直接显示所有文件的目录结构
  • 相当于把网盘目录公开了

如何判断?

  • 访问 Bucket 地址,看到 XML 格式的文件列表
  • 或者看到类似文件管理器的界面 图片.png

实战利用:

  1. 直接访问 Bucket 地址获取完整文件列表
  2. 批量下载敏感文件(数据库备份、配置文件、日志等)

2.3 公共读写权限 —— 任意文件上传

场景:管理员把权限设成了"公共读写"。

后果:

  • 任何人都能往 Bucket 里上传文件
  • 也能删除、修改文件

如何利用?

用 BurpSuite 抓包,把 GET 请求改成 PUT 请求来上传文件:

http
PUT /test.txt HTTP/1.1 Host: target-bucket.oss-cn-beijing.aliyuncs.com Content-Length: 20 这是测试上传的内容

但注意一个坑:

OSS 本身只做存储,不做解析。你上传 PHP 木马,访问时只会被下载,不会被执行。所以直接传木马没用。

那上传文件有啥用?

  • 如果 Bucket 绑定了自定义域名,且域名配置了解析,那上传的 HTML 文件可以被解析执行(后面讲)
  • 消耗对方的存储资源(刷流量)
  • 覆盖原有文件(篡改网站静态资源)

三、对象存储的安全问题 —— 域名解析接管

这是对象存储里最危险、最有实战价值的漏洞!

3.1 原理:域名是怎么和 Bucket 绑定的?

很多网站为了好看,不用默认的 OSS 地址,而是用自己的子域名来访问:

用户访问:oss.xxx.com ↓ DNS解析(CNAME记录) ↓ test010010.oss-cn-beijing.aliyuncs.com ↓ 返回文件内容

3.2 漏洞怎么产生的?

场景:

  1. 开发者创建了一个 Bucket:test010010
  2. 用子域名 oss.xxx.com 绑定到这个 Bucket(添加 CNAME 解析)
  3. 后来把 Bucket 删了,但DNS 解析记录没删

后果:

  • oss.xxx.com 还能 ping 通,还能解析
  • 但访问时提示 NoSuchBucket(没有这个桶)

3.3 如何利用 —— 接管域名!

步骤:

  1. 访问目标子域名,看到 NoSuchBucket 错误
  2. 去对应的云厂商(如阿里云)新建一个同名 Bucket(test010010)
  3. 选择相同的地域(比如对方原来是北京,你也选北京)
  4. 上传任意文件(比如钓鱼页面、黑页)
  5. 访问 oss.xxx.com,显示的是你上传的内容!

⚠️ 关键点:

  • 必须和对方用同一个云厂商
  • 必须选同一个地域
  • Bucket 名称必须完全一致

3.4 如何判断对方绑定了 OSS?

方法一:ping 域名

bash
ping oss.xxx.com

如果返回的地址是 *.oss-cn-*.aliyuncs.com 或类似格式,说明绑了 OSS。

方法二:看响应特征

  • 访问域名,看到 NoSuchBucket → 可能可以接管
  • 访问域名,看到 AccessDenied → 桶存在但私有,不能接管

方法三:用 FOFA 搜

body="NoSuchBucket"

图片.png 所以这个时候我们就可以通过注册同名的mtinf桶来接管


四、对象存储的安全问题 —— AccessKey 泄漏

4.1 什么是 AccessKey?

AccessKey 是云厂商给用户的 "账号密码",用来调用云服务的 API。一般包含:

  • AccessKeyId(相当于用户名)
  • AccessKeySecret(相当于密码)

图片.png 图片.png 拿到这对密钥,就等于拿到了云账号的部分或全部权限!

4.2 AccessKey 常在哪里泄漏?

泄漏位置说明
JS 源码前端 JS 文件里硬编码了密钥
小程序源码反编译小程序后找到密钥
APP 源码反编译 APK 后找到密钥
GitHub/Gitee代码托管平台的配置文件里泄漏
配置文件网站源码里的 config 文件
API 接口接口返回的数据里带了密钥
Heapdump 文件/actuator/heapdump 等内存转储文件

4.3 不同云厂商的 AccessKey 特征

云厂商AccessKeyId 前缀特征
阿里云LTAI 开头
腾讯云AKID 开头
华为云AK 开头
AWSAKIA 开头

4.4 拿到 AccessKey 后能做什么?

  • 连接 OSS 管理工具,下载/上传/删除 Bucket 里的所有文件
  • 调用 ECS API,控制云服务器(开机、关机、执行命令)
  • 查看云数据库、VPC 网络配置等敏感信息

常用工具:

  • 官方工具:OSSBrowser(阿里云)、COSBrowser(腾讯云)
  • 第三方工具:cf(云环境利用框架),云鉴 使用指南这里先推荐在线的https://wiki.teamssix.com/cloudsword/ 后面会出一篇文章的

云鉴的使用 查找相关操作

js
search aliyun
js
use xxx
js
set ak_id 和secret
js
run

图片.png

图片.png

cf的使用

图片.png

js
cf config

图片.png

图片.png

js
cf alibaba ls

图片.png

图片.png

这里手动测试给个高一点的权限让他可以接管

js
cf alibaba console

当然默认是crossfire 的用户也可以使用-u来指定

js
cf alibaba console -u teamssix

图片.png

图片.png

直接登录 图片.png

打完了可以注销

js
cf alibaba console cancel

图片.png

删除配置

js
cf config del

图片.png


五、实战案例汇总

案例1:对象存储任意文件上传

  1. 打开目标域名,发现直接显示了文件列表 → 判断为公共可读写
  2. ping 域名获取 OSS 的真实地址
  3. 用 BurpSuite 抓包,改 PUT 请求上传测试文件
  4. 上传成功,验证漏洞存在

案例2:对象存储域名劫持(Bucket 接管)

  1. 访问目标子域名,显示 NoSuchBucket
  2. 在阿里云创建同名 Bucket,选择相同地域
  3. 上传 HTML 文件
  4. 访问子域名,成功显示上传的内容 → 接管成功

案例3:AccessKey 泄漏利用

  1. 在 JS 文件里搜索 AccessKeyId,找到泄漏的密钥
  2. 用 OSSBrowser 工具连接
  3. 成功列出所有 Bucket,下载敏感文件

📅云服务篇 —— 弹性计算 & 云数据库安全

一、弹性计算服务器(ECS/EC2)安全

1.1 什么是弹性计算?

弹性计算就是云上的虚拟机。比如:

  • 阿里云 ECS
  • 腾讯云 CVM
  • AWS EC2
  • 华为云 ECS

你租一台云服务器,上面跑网站、跑应用。

1.2 什么是实例元数据服务(Metadata Service)?

云服务器里有一个特殊的内网地址,用来存放这台服务器的"身份信息":

云厂商元数据服务地址
阿里云http://100.100.100.200/
腾讯云http://metadata.tencentyun.com/
华为云http://169.254.169.254/
AWShttp://169.254.169.254/
Azurehttp://169.254.169.254/
谷歌云http://metadata.google.internal/

元数据里有什么?

  • 实例 ID、IP 地址、MAC 地址
  • 操作系统类型
  • 最重要的是:如果绑定了 IAM/RAM 角色,还能拿到临时访问凭证(AK/SK)!

图片.png

1.3 元数据服务为什么危险?

因为这个地址是内网地址,但云服务器上的应用如果存在 SSRF 漏洞,就可以让服务器自己请求这个地址,从而窃取临时凭证!

图片.png


二、利用 SSRF 窃取元数据 —— 经典攻击链

2.1 攻击前提

目标网站存在 SSRF 漏洞(比如图片加载、URL 访问等功能)。

2.2 攻击步骤

第一步:探测是否存在 IAM/RAM 角色

http://目标网站/?url=http://169.254.169.254/latest/meta-data/

如果返回目录列表,说明存在元数据服务。

第二步:获取角色名称

http://目标网站/?url=http://169.254.169.254/latest/meta-data/iam/security-credentials/

返回角色名,比如:ecs-default-role

第三步:获取临时凭证

http://目标网站/?url=http://169.254.169.254/latest/meta-data/iam/security-credentials/ecs-default-role/

返回的内容类似:

json
{ "AccessKeyId": "STS.XXXXXXX", "SecretAccessKey": "xxxxxxxx", "Token": "xxxxxxxx", "Expiration": "2024-01-01T00:00:00Z" }

🔥 拿到这个临时凭证,就等于拿到了云账号的权限!

2.3 拿到凭证后能做什么?

用工具(如 cf、aws cli)配置好临时凭证,就可以:

  • 查看该角色权限下的所有云资源
  • 控制 ECS 实例(执行命令)
  • 访问 OSS 存储桶
  • 操作云数据库
  • 横向移动到同账号下的其他服务器

cf 工具执行命令示例:

bash
cf alibaba ecs exec -b # 选择实例,直接获取 shell

三、Capital One 银行数据泄露事件(经典案例)

这是云安全历史上最著名的案例之一:

  1. 攻击者发现:Capital One 的 Web 应用存在 SSRF 漏洞
  2. 利用 SSRF:访问 AWS 元数据服务 169.254.169.254
  3. 窃取凭证:拿到了 EC2 实例绑定的 IAM 角色临时凭证
  4. 横向移动:用临时凭证访问 S3 存储桶
  5. 窃取数据:下载了约 1 亿用户的信用卡数据、社保号码
  6. 后果:银行股价暴跌,损失巨大

📌 核心教训:一个 SSRF 漏洞 + 元数据服务 = 整个云环境沦陷


四、云数据库安全

4.1 云数据库的常见安全问题

问题说明
外网暴露云数据库开启了公网访问,且密码较弱
默认端口使用默认端口(如 MySQL 3306、Redis 6379),容易被扫描
权限过大数据库账号权限配置过高
白名单配置不当允许任意 IP 连接

4.2 攻击思路

  1. 信息收集:通过 SSRF、元数据、配置文件找到数据库连接地址
  2. 外网连接:如果数据库开了公网,直接用工具(Navicat、redis-cli)连接
  3. 内网连接:如果拿到了 ECS 权限,在服务器内部连接数据库
  4. 权限提升:利用数据库漏洞或弱口令获取更高权限

五、AK 控制台接管

5.1 什么是 AK 控制台接管?

如果通过元数据或其他方式拿到的临时凭证权限足够大,攻击者可以:

  • 登录云厂商的控制台(通过 API 或工具)
  • 查看所有资源(ECS、RDS、OSS、VPC 等)
  • 创建新用户、修改权限
  • 完全接管整个云账号

5.2 如何判断临时凭证的权限?

  1. 用工具查询角色的策略(Policy)
  2. 尝试调用各种 API,看哪些能成功
  3. 用 cf 等工具的扫描功能自动探测

🛡️ 防御建议汇总

对象存储(OSS)防御

防御措施具体做法
最小权限原则Bucket 权限设为私有,不要开公共读写
禁用 ListObject不要配置显示目录结构的策略
自定义域名管理删除 Bucket 时,同步删除 DNS 解析记录
AccessKey 管理不要硬编码在代码里,使用 RAM 角色临时凭证
定期轮换定期更换 AccessKey

弹性计算(ECS)防御

防御措施具体做法
升级 IMDSv2使用加固模式的元数据服务(需要 PUT 请求获取 Token)
禁用不必要的元数据关闭不需要的元数据访问
修复 SSRF严格校验用户输入的 URL,禁止访问内网地址
最小权限角色给 ECS 实例绑定的角色只授予必要的权限
网络隔离使用安全组、VPC 限制访问

通用防御

防御措施具体做法
代码审计检查 JS、配置文件、Git 仓库,防止密钥泄漏
WAF 防护部署 Web 应用防火墙,拦截恶意请求
监控告警对异常 API 调用、AccessKey 使用进行告警
日志审计开启云操作日志,便于溯源

📚 常用工具清单

工具用途
OSSBrowser阿里云 OSS 管理工具
COSBrowser腾讯云 COS 管理工具
cf云环境利用框架(支持阿里云、AWS 等)
wafw00fWAF 识别工具
BurpSuite抓包改包、测试上传
FOFA网络空间测绘,搜 NoSuchBucket

📝 总结思维导图

云安全攻防(第93~94天) │ ├── 对象存储 OSS(第93天) │ ├── 权限配置不当 │ │ ├── 公共读 → 文件可被下载 │ │ ├── ListObject → 目录遍历 │ │ └── 公共读写 → 任意文件上传 │ ├── 域名解析接管 │ │ ├── 原理:Bucket删了,DNS没删 │ │ ├── 判断:NoSuchBucket │ │ └── 利用:创建同名Bucket接管 │ └── AccessKey泄漏 │ ├── JS/小程序/APP/GitHub │ └── 拿到AK = 控制云资源 │ └── 弹性计算 ECS(第94天) ├── 实例元数据服务 │ ├── 地址:169.254.169.254(各厂商不同) │ └── 包含:实例信息 + 临时凭证 ├── SSRF + 元数据 = 窃取AK │ ├── 步骤1:探测角色 │ ├── 步骤2:获取角色名 │ └── 步骤3:获取临时凭证 ├── 云数据库 │ └── 外网暴露 + 弱口令 = 被入侵 └── AK控制台接管 └── 权限够大 = 整个云账号沦陷

💬云安全的核心思路就是——云上的东西和传统服务器本质上一样,只是换了个地方跑。对象存储就是网盘,弹性计算就是虚拟机,理解了这一点,云安全的漏洞也就不难理解了。关键是多动手实验,在真实环境里踩坑才能记得牢!