AWS相关概念阐述
AWS 是 Amazon Web Services 的缩写,中文译为“亚马逊云服务”。它是全球市场份额最大、最全面且应用最广泛的云平台。
简单来说,AWS 让你不需要自己购买、拥有和维护实体服务器(硬件)或数据中心,就能通过互联网按需获取计算能力、存储空间、数据库等 IT 资源。
AWS不是服务器。
AWS更像:
资源管理平台里面有:
服务器存储网络身份权限各种资源。
所以真正的结构应该是:
AWS Account│├── IAM(身份于权限)│├── EC2(服务器)│├── S3(存储)│└── VPC(网络)这里第一次出现一个概念:
AWS AccountAWS Account
这是整个AWS世界的根节点。
可以理解成:
你的云公司你创建的所有东西:
EC2S3IAMVPC全部属于:
同一个Account所以后面攻击者最喜欢看到:
Account ID因为这代表:
目标云环境IAM(Identity And Access Management)
身份与权限管理
它能决定谁能访问什么资源
| 概念 | 说明 | 通俗理解 |
|---|---|---|
| 用户 | 代表一个人或应用程序,可以登录或调用 API | 具体的人,如“张三”、“运维机器人” |
| 组 | 一组用户的集合,可以统一授予权限 | 按部门分组,如“开发组”、“财务组” |
| 角色 | 通常给AWS 服务或临时身份使用,不绑定长期密码/密钥 | 一种“临时工牌”,谁需要就谁借用 |
| 策略 | 用 JSON 格式编写的权限规则文档,定义允许/拒绝哪些操作 | “允许对 S3 的 my-bucket 进行读取操作” |
| 身份提供商 | 允许使用外部身份登录 AWS(如公司 AD、Google、Facebook) | “刷工牌也能进 AWS 大门” |
IAM 与其他概念的关系
- 与“AWS 主账号”的关系:主账号拥有最高权限,日常操作强烈不建议使用主账号,应创建 IAM 用户使用
- 与其他 AWS 服务的关系:几乎所有 AWS 服务都需要通过 IAM 进行权限检查,没有 IAM 授权就无法访问任何资源
一句话总结:IAM 是 AWS 安全的基石——谁、能做什么、对什么资源做,完全由它控制。
EC2(Elastic Compute Cloud)
指的就是云服务器,不过多赘述
S3(Simple Storage Service)
对象存储(Object-Based Storage),也可以叫做面向对象的存储,现在也有不少厂商直接把它叫做云存储。
说到对象存储就不得不提 Amazon,**Amazon S3 **(Simple Storage Service) 简单存储服务,是 Amazon 的公开云存储服务,与之对应的协议被称为 S3 协议,目前 S3 协议已经被视为公认的行业标准协议,因此目前国内主流的对象存储厂商基本上都会支持 S3 协议。
在 Amazon S3 标准下中,对象存储中可以有多个桶(Bucket),然后把对象(Object)放在桶里,对象又包含了三个部分:Key、Data 和Metadata

| 概念 | 说明 | 通俗理解 |
|---|---|---|
| 存储桶 | 存储对象的容器,相当于顶级文件夹。桶名在 AWS 中全局唯一 | 你的“云上根目录” |
| 对象 | 你存储的文件 + 相关的元数据(如文件名、大小、修改时间等) | 你上传的“一张照片” |
| 键 | 对象的唯一标识符,相当于文件路径+文件名 | photos/2025/myfile.jpg |
| 区域 | 存储桶所在的 AWS 数据中心位置。选择靠近用户的区域可降低延迟 | 如美国东部、亚太东京 |
| 版本控制 | 保留同一对象的多个历史版本,可防止误删或覆盖 | “回收站 + 历史版本记录” |
| 存储类别 | 根据访问频率和成本选择不同层级(见下表) | 热数据、冷数据、归档 |
典型使用场景
- 静态网站托管:将 HTML/CSS/JS/图片直接放在 S3 桶中,开启静态网站功能即可低成本运行一个网站(无需服务器)。
- 数据备份与灾难恢复:数据库备份、系统日志、重要文档等自动上传到 S3,利用其 99.999999999%(11个9)的持久性保证安全。
- 大数据分析:将海量日志或原始数据存放在 S3,然后使用 Athena、EMR、Redshift 等服务直接分析 S3 中的数据。
- 内容分发与 CDN 源站:将 S3 作为源站,配合 CloudFront(AWS 的 CDN 服务)加速全球分发。
- 应用程序存储:用户上传的头像、文件、附件等存储在 S3。
- 数据湖:作为企业数据湖的中心存储,集中存放结构化/非结构化数据。
与其他 AWS 服务的关系
- 与 IAM:通过 IAM 策略控制谁可以访问哪个桶/哪个对象
- 与 EC2:EC2 虚拟机可将 S3 作为数据盘、备份目标或应用存储
- 与 CloudFront:CDN 从 S3 拉取内容加速全球分发
- 与 Lambda:对象上传时触发 Lambda 函数进行处理(如自动生成缩略图)
- 与 Athena:直接在 S3 上运行 SQL 查询分析数据(如 CSV、JSON 日志)
一句话总结:S3 是 AWS 的海量、高持久、低成本对象存储服务,几乎任何需要存文件或数据的场景都可以用它,是 AWS 生态中最重要的基础组件之一。
aws-cli
AWS CLI(Amazon Web Services Command Line Interface)是 AWS 官方提供的命令行工具,让你可以在终端中直接管理和操作 AWS 的各种资源(S3、EC2、IAM 等),而不需要通过浏览器登录控制台。一般的云渗透往往也是采用这一类命令行工具
核心特点
| 特点 | 说明 |
|---|---|
| 统一命令格式 | 所有服务都遵循 aws <服务> <操作> 的模式 |
| 脚本化 | 可以写成 Shell 脚本批量执行,实现自动化运维 |
| 跨平台 | 支持 Windows、Linux、macOS |
| 两种版本 | v1(旧版,Python 编写)、v2(新版,性能更好,推荐) |
| 输出格式 | 支持 JSON、YAML、文本、表格等多种格式 |
核心工作流程
aws <服务名称> <操作名称> [参数和选项]实际例子:
# 语法分解aws s3 ls # s3=服务, ls=列出存储桶aws ec2 describe-instances # ec2=服务, describe-instances=列出实例aws iam list-users # iam=服务, list-users=列出用户安装与配置
1. 安装(Ubuntu)
# 推荐方式:snap 安装sudo snap install aws-cli --classic
# 验证安装aws --version2. 配置凭证
aws configure系统会依次提示输入:
| 提示 | 说明 | 示例 |
|---|---|---|
AWS Access Key ID | IAM 用户的访问密钥 ID | AKIA... |
AWS Secret Access Key | IAM 用户的秘密访问密钥 | xxxxx |
Default region name | 默认操作的区域 | ap-southeast-1 |
Default output format | 输出格式 | json |
3. 配置文件位置
配置信息保存在两个文件中:
| 文件 | 路径 | 内容 |
|---|---|---|
| 凭证文件 | ~/.aws/credentials | Access Key ID 和 Secret Key |
| 配置文件 | ~/.aws/config | region 和 output format |
常用命令分类
一、S3 存储服务
| 操作 | 命令 |
|---|---|
| 列出所有存储桶 | aws s3 ls |
| 创建存储桶 | aws s3 mb s3://桶名 |
| 上传文件 | aws s3 cp 本地文件 s3://桶名/远程路径 |
| 下载文件 | aws s3 cp s3://桶名/文件 ./ |
| 同步整个目录 | aws s3 sync ./本地目录 s3://桶名/远程目录 |
| 删除文件 | aws s3 rm s3://桶名/文件 |
| 删除存储桶(需先清空) | aws s3 rb s3://桶名 --force |
| 移动文件 | aws s3 mv s3://桶名/源 s3://桶名/目标 |
| 生成预签名 URL | aws s3 presign s3://桶名/文件 --expires-in 秒数 |
示例:
# 上传文件到私有桶aws s3 cp myfile.txt s3://my-bucket/
# 下载整个目录aws s3 cp s3://my-bucket/logs/ ./logs/ --recursive
# 同步本地文件夹到 S3(只上传有变化的文件)aws s3 sync ./assets/ s3://my-bucket/assets/二、EC2 计算服务
| 操作 | 命令 |
|---|---|
| 列出所有实例 | aws ec2 describe-instances |
| 列出运行中的实例 | aws ec2 describe-instances --filters "Name=instance-state-name,Values=running" |
| 启动实例 | aws ec2 start-instances --instance-ids i-xxxxx |
| 停止实例 | aws ec2 stop-instances --instance-ids i-xxxxx |
| 重启实例 | aws ec2 reboot-instances --instance-ids i-xxxxx |
| 终止实例 | aws ec2 terminate-instances --instance-ids i-xxxxx |
| 查询实例的公共 IP | aws ec2 describe-instances --query "Reservations[*].Instances[*].PublicIpAddress" |
示例:
# 查看特定实例的详细信息aws ec2 describe-instances --instance-ids i-1234567890abcdef0
# 使用 --query 过滤输出(提取实例 ID 和状态)aws ec2 describe-instances --query "Reservations[*].Instances[*].[InstanceId,State.Name]" --output table三、IAM 身份管理
| 操作 | 命令 |
|---|---|
| 列出所有用户 | aws iam list-users |
| 创建用户 | aws iam create-user --user-name 用户名 |
| 删除用户 | aws iam delete-user --user-name 用户名 |
| 列出策略 | aws iam list-policies |
| 附加策略给用户 | aws iam attach-user-policy --user-name 用户名 --policy-arn arn:aws:iam::aws:policy/策略名 |
| 获取当前用户信息 | aws sts get-caller-identity |
四、通用命令格式
| 操作 | 命令 |
|---|---|
| 查看帮助 | aws <服务> help 或 aws help |
| 查看命令可用选项 | aws <服务> <操作> help |
| 指定不同的区域 | --region ap-northeast-1 |
| 指定输出格式 | --output json / text / table / yaml |
| 仅显示特定字段 | --query "字段路径" |
| 查看请求的详细过程 | --debug |
尝试
这一部分没必要看了,写的乱七八糟的,主要就是要自己上控制台看看这些东西在哪来配置,以运维的视角看看这些概念是怎么运作的
创建aws账户
AWS Console 亚马逊云管理控制台 - AWS云服务
我已经创建好了就不写过程了,按照指引走就行了,不会的要么问ai要么默认

创建IAM用户
一般的云资源是一些公司厂商共同使用,如果底下每一个用户都使用邮箱创建的最高权限账户往往会带来风险,这时候就需要创建分配具体权限的用户秉持着最小权限原则
创建用户后可以选择添加用户到组或复制权限或最直接附加策略
- 添加用户到组:这种情况往往是公司已经分配好工作组了,具体的工作组有具体的权限,这样新用户可以根据工作安排直接进组,享有组中的权限
- 复制权限:将已经创建好的用户的权限直接复制
- 直接附加策略:不同策略有不同的权限,相当于直接给该用户附加权限了
一些常见的策略
| 策略名称 | 权限范围 | 相当于什么 | 风险等级 |
|---|---|---|---|
AdministratorAccess | AWS所有资源完全控制 | Linux root | ⭐⭐⭐⭐⭐ |
ReadOnlyAccess | 所有资源只读 | Linux 普通用户 + 只读 | ⭐⭐ |
IAMFullAccess | 完全控制 IAM | 域管理员权限管理 | ⭐⭐⭐⭐⭐ |
IAMReadOnlyAccess | 查看 IAM | 查看用户和权限配置 | ⭐⭐ |
AmazonS3FullAccess | 完全控制 S3 | 文件服务器管理员 | ⭐⭐⭐⭐ |
AmazonS3ReadOnlyAccess | 只读 S3 | 文件查看权限 | ⭐ |
AmazonEC2FullAccess | 完全控制 EC2 | 虚拟机管理员 | ⭐⭐⭐⭐ |
AmazonEC2ReadOnlyAccess | 查看 EC2 | 查看服务器信息 | ⭐ |
AmazonVPCFullAccess | 管理 VPC | 网络管理员 | ⭐⭐⭐ |
AmazonRDSFullAccess | 管理数据库 | DBA | ⭐⭐⭐⭐ |
AmazonRDSReadOnlyAccess | 查看数据库配置 | 数据库审计员 | ⭐ |
AWSLambda_FullAccess | 管理 Lambda | Serverless 管理员 | ⭐⭐⭐ |
CloudTrailFullAccess | 管理审计日志 | 日志管理员 | ⭐⭐⭐⭐ |
CloudWatchFullAccess | 管理监控 | 运维监控管理员 | ⭐⭐ |

现在给他只给这个用户读取S3的权限

这里创建的IAM用户是可以通过提供的url和密码在网页端登录的,cli处的管理还没有开始学

记得创建访问密钥,这是aws-cli登录的前提
创建S3存储桶

-
点击“创建存储桶”
- 桶名:
my-first-web-你的名字拼音-日期(例如my-first-web-lilei-0601),必须全局唯一 - 区域:选离你最近的(如
ap-northeast-1东京) - 勾选“阻止全部公共访问权限”
- 其他默认,点击“创建存储桶”
- 桶名:
-
创建
index.txt文件,内容如下:hello world -
在S3控制台点击桶名 → “上传” → 添加
index.html→ 下一步 -
关键步骤:在“设置权限”页面,将“预定义ACL”设置为“使所有人都可以公开读取”
-
点击“上传” 因为我们设置的explorer用户只有读取c3的权限,所以可以上那个用户看看它的面板
创建ec2
因为我是使用ssh密钥登录的,所以要先去ec2->密钥对中创建密码,将本地创建的公钥导入

-
ubuntu系统
-
t3.micro实例
-
启动实例
这样就用它的免费额度创建了一台轻量级的vps(相当轻量级2核1G,这台服务器我也就拿来做云安全的相关实验了)
之后直接在termius上连接这台服务器
cli交互

在aws-cli上配置

查看存储桶,查看存储桶中的具体文件
现在本地写一个flag文件
flag{hacked_by_btop251}
尝试上传,注意到权限不足,因为在配置的时候只给了这个用户查看存储桶的权限
现在给他添加一些别的权限尝试

现在这个explorer用户具备完全控制S3存储桶和ec2的权限
再次尝试上传


成功了
一些其他尝试截屏要打码太麻烦了,自己去玩 云资产的基础部分大概就过这么多,现在对于一些资产的基本概念大概都搞清楚了,接下来就直接找靶场开打,以练代学了
如果这篇文章对你有帮助,欢迎分享给更多人!
部分信息可能已经过时









