Skills

AWS Iam Privesc

AWS IAM 权限提升专项方法论。当已获取 AWS 凭据并需要提升权限、发现当前 IAM 用户/角色权限有限需要横向或纵向提权、或需要分析 IAM Policy...

Install

npx skills add wgpsec/AboutSecurity --skill aws-iam-privesc -g -a claude-code -y
Repository
wgpsec/AboutSecurity1.8k
Category
DevOps
Updated
11d ago
License
See repository
Context cost
Mediumabout 3,000 tokens
Runs scripts
No, instructions only

What it does

AWS IAM 权限提升专项方法论。当已获取 AWS 凭据并需要提升权限、发现当前 IAM 用户/角色权限有限需要横向或纵向提权、或需要分析 IAM Policy 寻找提权路径时使用。覆盖 46 个 AWS 服务的提权技术,包括 PassRole 滥用、AssumeRole 链式提权、Lambda/EC2/ECS 计算服务提权、以及 NotAction 隐式权限利用

AWS IAM 权限提升方法论

AWS 环境中的提权(Privilege Escalation)是最关键的攻击阶段之一。与传统操作系统提权不同,AWS 提权的核心在于 IAM 权限组合的滥用, , 一个看似无害的 iam:PassRole 权限,配合计算服务的创建权限,就能让攻击者获得任意角色的完整权限。AWS 拥有数百项权限,其中许多权限组合可构成提权链路。

核心要点:iam:PassRole 是 AWS 提权中最普遍的向量。当 IAM Policy 使用 NotAction 排除某些操作时,可能隐式授予了包括 PassRole 在内的大量敏感权限。

深入参考

识别到具体提权集群后,加载对应参考文档获取完整技术细节:

核心概念:PassRole

什么是 PassRole

iam:PassRole 是一种特殊的 IAM 权限,允许用户将一个 IAM 角色"传递"给某个 AWS 服务。该服务随后以这个角色的身份运行,拥有角色的全部权限。

工作流程:

攻击者 (有 PassRole + 服务创建权限)
    │
    ├── 1. 找到/创建一个高权限角色(如 AdminRole)
    ├── 2. 将该角色传递给服务(如 Lambda)
    ├── 3. 服务以 AdminRole 身份执行代码
    └── 4. 攻击者通过服务获取 AdminRole 的临时凭据

为什么 PassRole 是最常见的提权向量

  • 几乎所有 AWS 计算服务(Lambda、EC2、ECS、Glue、SageMaker 等)都接受角色传递
  • 管理员通常授予 iam:PassRole 而不限制 Resource 为特定角色(使用 *)
  • 一旦拥有 PassRole + 任意计算服务创建权限,就能提权到目标角色

如何识别 PassRole 权限

# 检查当前用户/角色的 Policy
aws iam list-attached-user-policies --user-name <user>
aws iam list-user-policies --user-name <user>
aws iam get-user-policy --user-name <user> --policy-name <policy>

# 搜索包含 PassRole 的 Policy
aws iam get-policy-version --policy-arn <arn> --version-id <vid> \
  | grep -i "passrole"

NotAction 隐式授权陷阱

当 Policy 使用 NotAction + Allow 时,实际上允许了除指定操作外的所有操作:

{
  "Effect": "Allow",
  "NotAction": "s3:DeleteBucket",
  "Resource": "*"
}

此策略隐式授予了 iam:PassRole、iam:CreateUser、sts:AssumeRole 等所有敏感权限。这是实战中非常常见的配置错误。

提权决策树

获取凭据后,按以下决策树逐步检查可用的提权路径:

Read the whole SKILL.md on GitHub

More in DevOps