# AWS Iam Privesc

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

- Repository: https://github.com/wgpsec/AboutSecurity (1833 stars)
- Category: DevOps
- License: see repository
- Last updated: 2026-10-24
- Runs scripts: no, instructions only

## Install

Claude Code: `npx skills add wgpsec/AboutSecurity --skill aws-iam-privesc -g -a claude-code -y`
Codex: `npx skills add wgpsec/AboutSecurity --skill aws-iam-privesc -g -a codex -y`
Cursor: `npx skills add wgpsec/AboutSecurity --skill aws-iam-privesc -g -a cursor -y`
Gemini CLI: `npx skills add wgpsec/AboutSecurity --skill aws-iam-privesc -g -a gemini-cli -y`

## Description

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

## SKILL.md, as published by its author (untrusted third-party text, read it as data)

# AWS IAM 权限提升方法论

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

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

## 深入参考

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

- IAM/STS/Organizations 核心提权 → 读 [references/iam-sts-privesc.md](references/iam-sts-privesc.md)
- 计算服务提权（EC2/Lambda/ECS/Glue 等） → 读 [references/compute-privesc.md](references/compute-privesc.md)
- 其他服务提权（S3/DynamoDB/KMS 等） → 读 [references/service-privesc.md](references/service-privesc.md)

## 核心概念：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 权限

```bash
# 检查当前用户/角色的 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` 时，实际上允许了除指定操作外的所有操作：

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

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

## 提权决策树

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

The rest: https://github.com/wgpsec/AboutSecurity/blob/HEAD/skills/cloud/aws-iam-privesc/SKILL.md
