The text provides a comprehensive overview of cloud security architecture, covering cloud computing models (IaaS, PaaS, SaaS) and the shared responsibility model. It details major threats, including IAM misconfigurations, AccessKey leaks, metadata service attacks via SSRF, and insecure cloud storage. The guide also covers cloud host attack chains, container and VM escape techniques, and offers practical advice for setting up a lab environment using free tiers and Docker. The core message emphasizes that user configuration errors are the primary cause of cloud security failures, and it stresses the importance of least privilege, proper access controls, and regular security audits.
一、云安全体系架构
1.1 什么是云计算
云计算(Cloud Computing)是通过互联网按需提供可配置计算资源(服务器、存储、网络、数据库、应用等)的服务模式。它的核心特征可以概括为五个字:按需、弹性、计量。
对于渗透测试人员来说,云计算引入了一个新的攻击维度:配置错误。云平台提供了极其丰富的安全功能,但如果配置不当——比如将对象存储桶设置为公开访问、安全组允许 0.0.0.0/0 入站——安全功能形同虚设。根据 Gartner 的报告,到 2025 年,99% 的云安全故障将是用户的配置错误,而非云厂商的基础设施漏洞。
1.2 三种服务模型与责任划分
用户管理的范围越大,安全责任越重。这是云安全的第一原则——责任共担模型(Shared Responsibility Model)。
IaaS(Infrastructure as a Service,基础设施即服务):
提供最底层的计算、存储、网络资源。用户可以完全控制操作系统和应用。国内代表产品:
用户负责:操作系统安全补丁、应用安全、数据加密、访问控制、网络安全组配置。
云厂商负责:物理安全、网络基础设施、虚拟化层的安全。
PaaS(Platform as a Service,平台即服务):
提供应用运行环境。用户只需上传代码,平台自动处理部署、扩展。国内代表产品:
用户负责:应用代码安全、数据安全。
云厂商负责:运行环境、操作系统、网络。
SaaS(Software as a Service,软件即服务):
提供完整的、可直接使用的软件。用户通过浏览器或 App 访问。国内代表产品:
用户负责:仅自己的数据(账号密码强度、文件权限设置)。
云厂商负责:全部基础设施和应用安全。
安全责任的"下限"和"上限":
SaaS 用户的安全责任最轻——只需要管好自己的密码和数据分享权限。IaaS 用户的安全责任最重——需要管理操作系统、应用、网络、数据库的所有安全层面。配置错误是 IaaS 安全事件的头号原因。
1.3 云安全主要威胁面
威胁类别
具体风险
真实案例模式
身份与访问管理(IAM)
GitHub 泄露 AccessKey、权限策略用通配符 *、未启用 MFA
最常见的云安全事故,占 60%+
数据安全
OSS/S3 存储桶公开读、数据库无密码、快照备份公开
数据泄露事件头号原因
网络安全
安全组 0.0.0.0/0、SSH/RDP 对公网开放、VPC 设计有缺陷
导致服务器被入侵、被挖矿
配置管理
使用默认密码、服务端口意外暴露、元数据服务未防护
入门级但危害极大的错误
二、公有云攻防
2.1 IAM(身份与访问管理)安全
IAM 是云平台的"看门人"。它决定了谁(身份)可以对什么(资源)执行哪些操作(权限)。
国内云平台 IAM 对照:
概念
阿里云 RAM
腾讯云 CAM
用户
RAM 用户
CAM 用户/协作者
角色
RAM 角色
CAM 角色
策略
权限策略
策略
凭据
AccessKey(AK)
SecretId + SecretKey
AccessKey 泄露:
AccessKey(阿里云以 LTAI 开头)和 SecretKey 是访问云 API 的"用户名和密码"。泄露意味着攻击者可以使用该账号的全部权限。
泄露途径:
搜索泄露的 AccessKey:
权限过大判断:
安全的做法是遵循最小权限原则(Least Privilege):
2.2 元数据服务攻击
元数据服务(Metadata Service)是云平台为每个云主机提供的特殊 HTTP 端点。云主机可以通过这个端点查询自身信息——包括动态分配的 IAM/RAM 角色临时凭据。
各云平台元数据服务地址:
云平台
元数据服务地址
阿里云
http://100.100.100.200/latest/meta-data/
腾讯云
http://metadata.tencentyun.com/latest/meta-data/
AWS
http://169.254.169.254/latest/meta-data/
元数据服务返回的关键信息:
SSRF 攻击元数据服务:
SSRF(Server-Side Request Forgery,服务端请求伪造)是指攻击者通过存在漏洞的 Web 应用,让服务器代为发起 HTTP 请求。如果应用没有对用户输入的 URL 做充分的限制,攻击者可以提供 http://100.100.100.200/latest/meta-data/,服务器会"替"攻击者请求元数据服务,从而泄露 RAM 角色凭据。
防御措施:
方法
说明
应用层
过滤用户输入的 URL,禁止访问 100.100.100.200、10.0.0.0/8、127.0.0.0/8 等内网地址
网络层
安全组限制出站流量,只允许必要的出站连接
RAM 角色
使用最小权限原则——即使凭据泄露,攻击者也只能执行有限操作
IMDSv2
增强型元数据服务——需要先获取 Token 才能查询
2.3 云存储安全
对象存储(Object Storage)是云平台提供的海量、低成本、高可靠的文件存储服务。
国内产品对照:
阿里云
腾讯云
华为云
OSS(对象存储服务)
COS(对象存储)
OBS(对象存储服务)
访问权限类型:
权限
含义
URL 直接访问结果
私有(Private)
仅授权用户可访问,默认值
返回 AccessDenied
公共读(Public Read)
任何人可读取所有文件
返回文件内容或文件列表
公共读写(Public Read-Write)
任何人可读写删除所有文件
可上传、修改、删除文件
测试存储桶权限:
存储桶名称枚举:
攻击者可通过字典爆破发现公开的存储桶。存储桶命名通常遵循可预测的模式:
三、云主机攻防
3.1 获取云主机权限后的信息收集
当攻击者通过 Web 漏洞、弱密码或其他方式获得了云主机 Shell 后,下一步是收集凭据以实现横向移动。
3.2 完整攻击链
攻击链一:Web 漏洞 → 反弹 Shell → 凭据收集 → 云资源操作
这是最常见的路径。攻击者利用应用漏洞(SQL 注入、文件上传、RCE)获得服务器 Shell,然后收集服务器上的 AccessKey,使用 CLI 工具操作云资源。
攻击链二:SSRF → 元数据服务 → 获取 RAM 角色凭据 → 云资源操作
这个攻击链的关键前提是应用存在 SSRF 漏洞,且没有过滤内网地址。攻击者通过 SSRF 使服务器请求元数据服务,获取 RAM 角色的临时凭据。
攻击链三:公开存储桶 → 源码泄露 → 提取数据库密码 → 连接数据库
开发团队将源码备份或日志文件上传到公开的存储桶中。攻击者下载后,在源码中找到数据库连接字符串,直接连接云数据库。
3.3 云主机加固
加固项
具体措施
为什么重要
SSH 强化
密钥登录、禁用密码、改端口
防止暴力破解
安全组
最小放行——仅开放 80/443 + 堡垒机 IP 的 22
减少攻击面
凭据管理
使用 RAM 角色代替 AccessKey 硬编码
避免凭据泄露
补丁管理
定期更新 OS 和应用
修复已知漏洞
日志审计
开启 ActionTrail/CloudAudit
事后追溯
四、虚拟化安全
4.1 容器 vs 虚拟机
维度
容器(Docker)
虚拟机(KVM/VMware)
架构
共享宿主机内核
拥有独立 Guest 内核
隔离
进程级(Namespace + Cgroups)
硬件级(VT-x/AMD-V)
启动
秒级
分钟级
资源
MB 级
GB 级
逃逸难度
较低(本质上是内核漏洞利用)
较高(需要虚拟化层零日)
为什么容器更容易逃逸:容器共享宿主机的 Linux 内核。如果容器进程找到内核漏洞并利用成功,它在宿主机上就获得了代码执行能力——因为两者运行在同一个内核上。虚拟机有独立的 Guest 内核,即使 Guest 被攻破,攻击者仍被困在 Guest 中——还需要再突破虚拟化层(QEMU/KVM/VMware)的隔离才能到达 Host。
4.2 Docker 容器逃逸
条件 1:--privileged 特权容器。特权容器拥有全部 Capabilities,可以操作宿主机硬件。
条件 2:挂载 Docker Socket(-v /var/run/docker.sock:/var/run/docker.sock)。容器内可直接控制宿主机的 Docker。
条件 3:CAP_SYS_ADMIN + cgroup 可写。利用 cgroup notify_on_release 在宿主机执行命令。
4.3 虚拟机逃逸
虚拟机逃逸需要 Guest 内的代码执行 + 虚拟化层的已知漏洞。
知名漏洞:
判断当前是否在虚拟机中:
五、搭建实验环境
5.1 阿里云免费套餐
访问 https://free.aliyun.com,使用手机号注册 + 支付宝实名认证(无需信用卡):
5.2 Docker 本地靶场(零成本)
5.3 VirtualBox + Ubuntu + KVM
核心要点
主题
核心
服务模型
IaaS/PaaS/SaaS,用户安全责任递减
责任共担
云厂商负责"云的安全",用户负责"云中的安全"
IAM
AccessKey 泄露是头号风险;*:*:* = 定时炸弹
元数据服务
SSRF 的关键跳板 → 可获取 RAM 角色临时凭据
云存储
公开读 = 数据泄露;公开读写 = 数据泄露+篡改
容器逃逸
privileged + docker.sock + CAP_SYS_ADMIN/cgroup
虚拟机逃逸
需 QEMU/KVM 虚拟化层漏洞(较罕见)
国内实验
阿里云免费套餐 + Docker 本地 = 零成本