performing-cloud-penetration-testing-with-pacu
使用开源 AWS 利用框架 Pacu 执行已授权的 AWS 渗透测试,枚举 IAM 配置、发现权限提升路径、测试凭据收集,并通过系统化的攻击模拟验证安全控制。
Best use case
performing-cloud-penetration-testing-with-pacu is best used when you need a repeatable AI agent workflow instead of a one-off prompt.
使用开源 AWS 利用框架 Pacu 执行已授权的 AWS 渗透测试,枚举 IAM 配置、发现权限提升路径、测试凭据收集,并通过系统化的攻击模拟验证安全控制。
Teams using performing-cloud-penetration-testing-with-pacu should expect a more consistent output, faster repeated execution, less prompt rewriting.
When to use this skill
- You want a reusable workflow that can be run more than once with consistent structure.
When not to use this skill
- You only need a quick one-off answer and do not need a reusable workflow.
- You cannot install or maintain the underlying files, dependencies, or repository context.
Installation
Claude Code / Cursor / Codex
Manual Installation
- Download SKILL.md from GitHub
- Place it in
.claude/skills/performing-cloud-penetration-testing-with-pacu/SKILL.mdinside your project - Restart your AI agent — it will auto-discover the skill
How performing-cloud-penetration-testing-with-pacu Compares
| Feature / Agent | performing-cloud-penetration-testing-with-pacu | Standard Approach |
|---|---|---|
| Platform Support | Not specified | Limited / Varies |
| Context Awareness | High | Baseline |
| Installation Complexity | Unknown | N/A |
Frequently Asked Questions
What does this skill do?
使用开源 AWS 利用框架 Pacu 执行已授权的 AWS 渗透测试,枚举 IAM 配置、发现权限提升路径、测试凭据收集,并通过系统化的攻击模拟验证安全控制。
Where can I find the source code?
You can find the source code on GitHub using the link provided at the top of the page.
SKILL.md Source
# 使用 Pacu 执行云渗透测试
## 适用场景
- 对 AWS 环境进行已授权的渗透测试时
- 验证 IAM 策略、SCP 和权限边界的有效性时
- 评估一组受损 AWS 凭据的影响范围时
- 测试 GuardDuty、Security Hub 和自定义告警的检测能力时
- 针对 AWS 云基础设施构建红队演练(Red Teaming)时
**不适用于**:未授权的任何 AWS 账户测试、测试 AWS 基础设施本身(属于共同责任范畴)、未经 AWS 批准的 DDoS 或大规模攻击,或在没有明确授权和应急程序的情况下测试生产账户。
## 前置条件
- 已获取 AWS 账户所有者的书面授权,并定义了范围和交战规则
- 已安装 Pacu v1.5+(`pip install pacu`)
- 具有有限初始权限的测试 AWS 凭据(模拟凭据泄露场景)
- 已启用 CloudTrail 日志,用于捕获所有 Pacu 活动以供事后审查
- 已启用 GuardDuty,用于验证 Pacu 活动的检测情况
- 已记录紧急联系人和回滚程序
## 工作流程
### 步骤 1:初始化 Pacu 会话并配置凭据
使用测试凭据设置 Pacu 会话,并定义测试范围。
```bash
# 安装 Pacu
pip install pacu
# 启动 Pacu
pacu
# 为本次测试创建新会话
Pacu > set_keys --key-alias pentest-target
# 输入 Access Key ID: AKIA...
# 输入 Secret Access Key: ...
# 验证身份
Pacu > whoami
# 查看可用模块
Pacu > list
Pacu > search iam
Pacu > search ec2
Pacu > search s3
```
### 步骤 2:枚举 IAM 配置
运行 IAM 枚举模块,映射用户、角色、策略和组成员关系。
```bash
# 全面 IAM 枚举
Pacu > run iam__enum_users_roles_policies_groups
# 枚举当前主体的详细权限
Pacu > run iam__enum_permissions
# 枚举账户授权详情(需要 iam:GetAccountAuthorizationDetails)
Pacu > run iam__get_credential_report
# 枚举跨账户访问的角色信任策略
Pacu > run iam__enum_roles
# 检查当前会话数据
Pacu > data iam
```
### 步骤 3:扫描权限提升路径
使用 Pacu 的权限提升扫描器识别所有可利用的提升向量。
```bash
# 运行权限提升扫描器
Pacu > run iam__privesc_scan
# 扫描器测试 21+ 种提升方法:
# 方法 1: iam:CreatePolicyVersion
# 方法 2: iam:SetDefaultPolicyVersion
# 方法 3: iam:PassRole + ec2:RunInstances
# 方法 4: iam:PassRole + lambda:CreateFunction + lambda:InvokeFunction
# 方法 5: iam:PassRole + lambda:CreateFunction + lambda:CreateEventSourceMapping
# 方法 6: iam:PassRole + glue:CreateDevEndpoint
# 方法 7: iam:PassRole + cloudformation:CreateStack
# 方法 8: iam:PassRole + datapipeline:CreatePipeline
# 方法 9: iam:CreateAccessKey
# 方法 10: iam:CreateLoginProfile
# 方法 11: iam:UpdateLoginProfile
# 方法 12: iam:AttachUserPolicy
# 方法 13: iam:AttachGroupPolicy
# 方法 14: iam:AttachRolePolicy
# 方法 15: iam:PutUserPolicy
# 方法 16: iam:PutGroupPolicy
# 方法 17: iam:PutRolePolicy
# 方法 18: iam:AddUserToGroup
# 方法 19: iam:UpdateAssumeRolePolicy
# 方法 20: sts:AssumeRole
# 方法 21: lambda:UpdateFunctionCode
# 如果发现提升路径,尝试利用
Pacu > run iam__privesc_scan --escalate
```
### 步骤 4:枚举并测试数据访问
发现可访问的数据存储,包括 S3、DynamoDB、RDS 和 Secrets Manager。
```bash
# 枚举 S3 存储桶
Pacu > run s3__bucket_finder
# 下载 S3 存储桶数据进行分析
Pacu > run s3__download_bucket --bucket target-bucket --dl-names
# 枚举 EC2 实例并提取用户数据
Pacu > run ec2__enum
Pacu > run ec2__download_userdata
# 枚举 Lambda 函数,检查环境变量中的密钥
Pacu > run lambda__enum
# 枚举 Secrets Manager
Pacu > run secretsmanager__enum
# 枚举 SSM 参数(通常包含密钥)
Pacu > run ssm__download_parameters
# 检查暴露的 EBS 快照
Pacu > run ebs__enum_snapshots_unauth
```
### 步骤 5:测试横向移动和持久化
评估跨账户访问、服务利用和持久化机制。
```bash
# 测试跨账户角色担任
Pacu > run sts__assume_role --role-arn arn:aws:iam::TARGET:role/CrossAccountRole
# 枚举 Lambda 以寻找代码执行机会
Pacu > run lambda__enum
# 如果存在 lambda:UpdateFunctionCode 权限,可能注入代码
# 测试 EC2 instance connect 进行横向移动
Pacu > run ec2__enum
# 检查具有更广泛权限实例配置文件的实例
# 检查 CodeBuild 项目(潜在的凭据访问)
Pacu > run codebuild__enum
# 枚举 ECS/Fargate 进行基于容器的横向移动
Pacu > run ecs__enum
# 导出所有发现的数据
Pacu > data all
```
### 步骤 6:验证检测并生成报告
审查安全控制是否检测到测试活动,并汇总发现。
```bash
# 检查测试期间生成的 GuardDuty 发现
aws guardduty list-findings \
--detector-id $(aws guardduty list-detectors --query 'DetectorIds[0]' --output text) \
--finding-criteria '{
"Criterion": {
"updatedAt": {"GreaterThanOrEqual": ENGAGEMENT_START_EPOCH}
}
}' --output json
# 检查 Security Hub 发现
aws securityhub get-findings \
--filters '{
"CreatedAt": [{"Start": "ENGAGEMENT_START_ISO", "End": "ENGAGEMENT_END_ISO"}]
}'
# 导出 Pacu 会话数据用于报告
Pacu > export_keys --all
Pacu > data all > pacu-session-export.json
# 清理评估期间创建的测试产物
aws iam delete-user --user-name pacu-test-user 2>/dev/null
aws iam delete-access-key --user-name pacu-test-user --access-key-id AKIA... 2>/dev/null
```
## 核心概念
| 术语 | 定义 |
|------|------|
| Pacu | 由 Rhino Security Labs 维护的开源 AWS 利用框架,为已授权渗透测试提供模块化攻击能力 |
| 权限提升扫描(Privilege Escalation Scan) | 对 IAM 策略进行自动化分析,识别将有限访问提升至管理控制的已知方法 |
| iam:PassRole | 关键 IAM 操作,允许主体为 AWS 服务分配角色,通过 Lambda、EC2 或 Glue 实现间接权限提升 |
| 跨账户角色担任(Cross-Account Role Assumption) | 通过信任策略配置使用 sts:AssumeRole 获取另一 AWS 账户的临时凭据 |
| 交战规则(Rules of Engagement) | 定义渗透测试范围、方法、时间和边界的书面协议 |
| 后渗透(Post-Exploitation) | 在获得初始访问后执行的活动,包括数据访问、横向移动和建立持久化 |
## 工具与系统
- **Pacu**:AWS 利用框架,拥有 50+ 个枚举、提升、持久化和数据外泄模块
- **CloudFox**:从攻击者角度识别攻击路径的 AWS 枚举工具
- **Principal Mapper**:IAM 权限提升图形分析工具,用于可视化提升路径
- **ScoutSuite**:多云安全评估工具,用于在测试前识别配置错误
- **AWS CloudTrail**:审计日志,用于捕获测试期间的所有 Pacu 活动
## 常见场景
### 场景:从受损开发者凭据开始的红队评估
**场景背景**:红队演练模拟攻击者从泄露的代码仓库获取开发者 AWS 访问密钥的场景。目标是确定从此起点可实现的最大影响。
**方法**:
1. 使用受损凭据初始化 Pacu,运行 `whoami` 确认身份
2. 运行 `iam__enum_permissions` 映射开发者的有效权限
3. 执行 `iam__privesc_scan` 识别从开发者到管理员的提升路径
4. 发现开发者可以调用 `iam:PassRole` + `lambda:CreateFunction`,创建带管理员角色的 Lambda
5. 利用提升获取管理员级别的临时凭据
6. 枚举 S3 存储桶、下载敏感数据并访问 Secrets Manager
7. 验证 GuardDuty 是否检测到提升和数据访问活动
8. 清理所有测试产物并记录完整攻击链
**常见陷阱**:Pacu 模块可能产生大量噪音,在短时间内生成许多 API 调用。GuardDuty 可能从测试者 IP 触发 `Recon:IAMUser/MaliciousIPCaller` 发现。与 SOC 团队协调,将测试 IP 加入白名单,或建立清晰的沟通渠道以区分测试和真实攻击。测试后务必清理持久化产物。
## 输出格式
```
AWS 渗透测试报告(Pacu)
=====================================
目标账户: 123456789012
测试周期: 2026-02-20 至 2026-02-23
起始凭据: 开发者角色(S3 只读、Lambda 调用)
授权: ROE 文件 #PT-2026-015
攻击路径摘要:
初始访问: S3 只读、Lambda 调用
最终获得访问: AdministratorAccess(完全账户入侵)
获得管理员权限时间: 47 分钟
GuardDuty 检测: 是(12 分钟后)
Security Hub 检测: 是(18 分钟后)
SOC 响应时间: 45 分钟(错过了提升窗口)
已执行的 Pacu 模块:
iam__enum_users_roles_policies_groups: 成功
iam__enum_permissions: 成功
iam__privesc_scan: 发现 3 条提升路径
s3__download_bucket: 访问了 4 个存储桶
lambda__enum: 枚举了 12 个函数
secretsmanager__enum: 获取了 8 个密钥
已利用的提升路径:
[1] iam:PassRole + lambda:CreateFunction -> AdminRole(严重)
[2] sts:AssumeRole -> CrossAccountProdRole(高)
[3] dev-policy 上的 iam:CreatePolicyVersion(严重)
访问的数据:
下载的 S3 对象: 1,247 个文件(2.3 GB)
Secrets Manager 值: 8 个密钥,包括数据库凭据
SSM 参数: 23 个参数,包括 API 密钥
检测结果:
GuardDuty 发现: 7 个
Security Hub 发现: 12 个
触发的自定义 CloudWatch 告警: 3 个
SOC 确认: 是(45 分钟响应)
建议:
1. 对所有开发者角色应用权限边界
2. 从非管理员主体移除 iam:PassRole
3. 将 SOC 对 IAM 提升告警的响应时间缩短到 15 分钟以内
4. 在非管理员 OU 中实施 SCP,阻止 iam:CreatePolicyVersion
```Related Skills
testing-websocket-api-security
测试 WebSocket API 实现中的安全漏洞,包括 WebSocket 升级时缺少身份认证、跨站 WebSocket 劫持(Cross-Site WebSocket Hijacking,CSWSH)、通过 WebSocket 消息进行的注入攻击、输入校验不足、通过消息泛洪实施拒绝服务,以及通过 WebSocket 帧造成的信息泄露。测试人员使用 Burp Suite 拦截 WebSocket 握手和消息,构造恶意 payload,并测试 WebSocket 通道上的授权绕过。适用于 WebSocket 安全测试、WS 渗透测试、CSWSH 攻击或实时 API 安全评估相关请求。
testing-oauth2-implementation-flaws
测试 OAuth 2.0 和 OpenID Connect 实现中的安全缺陷,包括授权码拦截、重定向 URI 操控、OAuth 流程中的 CSRF、令牌泄露、权限范围(scope)提升以及 PKCE 绕过。测试人员对授权服务器、客户端应用及令牌处理进行评估,发现可导致账户接管或未授权访问的常见错误配置。适用于 OAuth 安全测试、OIDC 漏洞评估、OAuth2 重定向绕过或授权码流程测试相关请求。
testing-mobile-api-authentication
测试移动应用 API 的认证与授权机制,识别认证失效、不安全的令牌管理、会话固定、 权限提升和 IDOR 漏洞。适用于对移动应用后端进行 API 安全评估、测试 JWT 实现、 评估 OAuth 流程或评估会话管理的场景。适合涉及移动 API 认证测试、令牌安全评估、 OAuth 移动端流程测试或 API 授权绕过的相关请求。
testing-jwt-token-security
在安全测试活动中,评估 JSON Web Token(JWT)实现中的密码学弱点、算法混淆攻击和授权绕过漏洞。
testing-for-xxe-injection-vulnerabilities
在授权的渗透测试中发现和利用 XML 外部实体(XXE)注入漏洞,以读取服务器文件、执行 SSRF 并外泄数据。
testing-for-xss-vulnerabilities
通过向反射型、存储型和 DOM 型上下文注入 JavaScript 载荷,测试 Web 应用程序的跨站脚本(XSS)漏洞, 演示客户端代码执行、会话劫持和用户冒充。测试人员识别所有注入点和输出上下文,构造适合上下文的载荷, 并绕过净化和 CSP 保护。适用于 XSS 测试、跨站脚本评估、客户端注入测试或 JavaScript 注入漏洞测试等请求场景。
testing-for-xss-vulnerabilities-with-burpsuite
在授权的安全评估过程中,使用 Burp Suite 的扫描器、Intruder 和 Repeater 工具识别和验证跨站脚本(XSS)漏洞。适用于 Web 应用渗透测试中检测反射型、存储型和 DOM 型 XSS,验证自动化扫描器报告的 XSS 发现,以及评估 CSP 和 XSS 过滤器的有效性时使用。
testing-for-xml-injection-vulnerabilities
测试 Web 应用程序中的 XML 注入漏洞,包括 XXE(XML 外部实体注入)、XPath 注入和 XML 实体攻击,以识别数据泄露和服务器端请求伪造(SSRF)风险。
testing-for-sensitive-data-exposure
在安全评估中识别敏感数据暴露漏洞,包括 API 密钥泄露、响应中的 PII、不安全存储以及未受保护的数据传输。
testing-for-open-redirect-vulnerabilities
通过分析 URL 重定向参数、绕过技术和利用链,识别并测试 Web 应用程序中的开放重定向漏洞,用于网络钓鱼和 Token 窃取。
testing-for-json-web-token-vulnerabilities
测试 JWT 实现中的关键漏洞,包括算法混淆、none 算法绕过、kid 参数注入和弱密钥利用,以实现认证绕过和权限提升。
testing-for-host-header-injection
测试 Web 应用程序的 HTTP Host 头部注入漏洞,以识别密码重置中毒、Web 缓存投毒、SSRF 以及虚拟主机路由操控风险。