performing-cloud-penetration-testing

对 AWS、Azure 和 GCP 云环境执行授权渗透测试,识别 IAM 错误配置、暴露的存储桶、过度宽松的安全组、 无服务器函数漏洞以及从初始访问到账户沦陷的云特定攻击路径。测试人员使用云原生工具及 Pacu、 ScoutSuite 等专用框架枚举并利用云基础设施。适用于云渗透测试、AWS 安全评估、Azure 渗透测试 或云基础设施安全测试等请求场景。

9 stars

Best use case

performing-cloud-penetration-testing is best used when you need a repeatable AI agent workflow instead of a one-off prompt.

对 AWS、Azure 和 GCP 云环境执行授权渗透测试,识别 IAM 错误配置、暴露的存储桶、过度宽松的安全组、 无服务器函数漏洞以及从初始访问到账户沦陷的云特定攻击路径。测试人员使用云原生工具及 Pacu、 ScoutSuite 等专用框架枚举并利用云基础设施。适用于云渗透测试、AWS 安全评估、Azure 渗透测试 或云基础设施安全测试等请求场景。

Teams using performing-cloud-penetration-testing 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

$curl -o ~/.claude/skills/performing-cloud-penetration-testing/SKILL.md --create-dirs "https://raw.githubusercontent.com/killvxk/cybersecurity-skills-zh/main/skills/performing-cloud-penetration-testing/SKILL.md"

Manual Installation

  1. Download SKILL.md from GitHub
  2. Place it in .claude/skills/performing-cloud-penetration-testing/SKILL.md inside your project
  3. Restart your AI agent — it will auto-discover the skill

How performing-cloud-penetration-testing Compares

Feature / Agentperforming-cloud-penetration-testingStandard Approach
Platform SupportNot specifiedLimited / Varies
Context Awareness High Baseline
Installation ComplexityUnknownN/A

Frequently Asked Questions

What does this skill do?

对 AWS、Azure 和 GCP 云环境执行授权渗透测试,识别 IAM 错误配置、暴露的存储桶、过度宽松的安全组、 无服务器函数漏洞以及从初始访问到账户沦陷的云特定攻击路径。测试人员使用云原生工具及 Pacu、 ScoutSuite 等专用框架枚举并利用云基础设施。适用于云渗透测试、AWS 安全评估、Azure 渗透测试 或云基础设施安全测试等请求场景。

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

# 执行云渗透测试

## 使用场景

- 在从本地迁移到云环境前后评估云基础设施的安全态势
- 测试 IAM 策略、安全组和网络 ACL 是否存在过度宽松的配置
- 评估无服务器架构(Lambda、Azure Functions、Cloud Functions)的安全性
- 识别包含敏感数据的暴露云存储(S3 存储桶、Azure Blob 容器、GCS 存储桶)
- 测试云安全控制的有效性(GuardDuty、Defender for Cloud、Security Command Center)

**不适用场景**:未同时获得云账户所有者书面授权以及遵守云服务商渗透测试政策(AWS 大多数服务无需事先审批;Azure 和 GCP 某些测试类型需提前通知或审批)。

## 前置条件

- 书面授权,指定目标云账户、区域和在测试范围内的服务
- 遵守云服务商渗透测试政策(AWS 渗透测试政策、Azure 渗透测试规则、GCP 可接受使用政策)
- 不同权限级别的云凭据(只读、开发者、管理员),用于测试授权边界
- 已安装 Pacu(AWS)、PowerZure(Azure)或 GCP 专用利用框架
- 已安装 ScoutSuite 或 Prowler,用于自动化云安全态势评估
- 已配置测试凭据的 AWS CLI、Azure CLI 和/或 gcloud CLI

## 工作流程

### 步骤一:云侦察与枚举

枚举云环境以映射攻击面:

**AWS 枚举:**
- `aws sts get-caller-identity` — 验证当前身份和账户
- `aws iam list-users` — 列出所有 IAM 用户
- `aws iam list-roles` — 列出所有 IAM 角色及其信任策略
- `aws s3 ls` — 列出所有 S3 存储桶
- `aws ec2 describe-instances --region us-east-1` — 列出 EC2 实例
- `aws lambda list-functions` — 列出 Lambda 函数
- `aws rds describe-db-instances` — 列出 RDS 数据库
- 使用 Pacu 进行自动化枚举:`run iam__enum_permissions`、`run iam__enum_users_roles_policies_groups`

**Azure 枚举:**
- `az account list` — 列出订阅
- `az ad user list` — 列出 Azure AD 用户
- `az vm list` — 列出虚拟机
- `az storage account list` — 列出存储账户
- `az keyvault list` — 列出密钥保管库
- `az webapp list` — 列出 Web 应用程序

**跨云:**
- 运行 ScoutSuite 进行全面态势评估:`scout aws --profile <profile>` 或 `scout azure --cli`
- 运行 Prowler 进行 AWS CIS 基准合规检查:`prowler aws`

### 步骤二:IAM 与身份利用

测试 IAM 策略的权限提升路径:

**AWS IAM 提权:**
- 检查过度宽松的策略:`aws iam get-user-policy`、`aws iam list-attached-user-policies`
- 测试已知 IAM 提权路径:
  - `iam:CreatePolicyVersion` — 创建授予管理员访问权限的新策略版本
  - `iam:SetDefaultPolicyVersion` — 将旧版、更宽松的策略版本设为默认
  - `iam:PassRole` + `lambda:CreateFunction` + `lambda:InvokeFunction` — 创建带高权限角色的 Lambda
  - `iam:AttachUserPolicy` — 为当前用户附加 AdministratorAccess 策略
  - `sts:AssumeRole` — 若信任策略允许则担任更高权限角色
- 使用 Pacu 进行自动化提权扫描:`run iam__privesc_scan`

**Azure 身份提权:**
- 枚举角色分配:`az role assignment list --assignee <user>`
- 检查订阅级别的 Contributor/Owner 角色
- 通过应用注册、服务主体和托管身份测试 Azure AD 权限提升
- 检查 Azure AD 中的全局管理员分配

### 步骤三:存储与数据暴露

测试云存储服务的数据暴露情况:

- **S3 存储桶安全**:对每个存储桶测试:
  - 公共访问:`aws s3 ls s3://<bucket> --no-sign-request`
  - ACL 错误配置:`aws s3api get-bucket-acl --bucket <bucket>`
  - 存储桶策略:`aws s3api get-bucket-policy --bucket <bucket>`
  - 版本控制(访问已删除数据):`aws s3api list-object-versions --bucket <bucket>`
- **Azure Blob 暴露**:测试公共容器访问和共享访问签名(SAS)令牌泄露
- **存储中的密钥**:在存储内容中搜索凭据、API 密钥、数据库连接字符串和 PII
- **数据库暴露**:检查具有公共端点、默认凭据或安全组允许 0.0.0.0/0 访问的 RDS/Azure SQL 实例

### 步骤四:计算与无服务器利用

测试计算资源的漏洞:

- **EC2 实例元数据**:从已入侵实例查询 `http://169.254.169.254/latest/meta-data/iam/security-credentials/` 以提取 IAM 角色凭据
- **IMDSv1 利用**:测试是否强制使用 IMDSv2。IMDSv1 易受基于 SSRF 的凭据窃取攻击
- **Lambda 函数分析**:下载 Lambda 函数代码(`aws lambda get-function --function-name <name>`)并检查硬编码凭据、不安全依赖和注入漏洞
- **容器安全**:测试 ECS/EKS 的 Pod 级权限提升、容器逃逸和服务账户令牌滥用
- **用户数据脚本**:`aws ec2 describe-instance-attribute --instance-id <id> --attribute userData` 查找启动脚本中的凭据

### 步骤五:网络与安全组评估

测试网络控制的错误配置:

- **安全组分析**:识别允许 0.0.0.0/0 入站访问敏感端口(SSH/22、RDP/3389、数据库端口)的安全组
- **VPC 流日志**:检查是否启用 VPC 流日志以具备取证能力
- **跨账户访问**:测试是否存在允许其他 AWS 账户访问的过度宽松资源策略
- **VPC 对等**:识别 VPC 对等连接并测试对等 VPC 是否可访问敏感资源
- **VPN 和直连**:识别混合连接并测试云到本地的访问控制是否被执行

## 核心概念

| 术语 | 定义 |
|------|------------|
| **IAM 权限提升** | 利用过度宽松的 IAM 策略将有限访问权限提升至对云账户的管理控制权 |
| **实例元数据服务(IMDS)** | 云实例上提供实例配置和 IAM 角色凭据的 HTTP 端点(169.254.169.254),可通过 SSRF 被利用 |
| **角色担任(Assumed Role)** | 用户或服务临时担任的 IAM 角色,以获取其权限;受信任策略约束,定义谁可以担任该角色 |
| **SCP(服务控制策略)** | AWS Organizations 中的组织级策略,为账户设置权限边界,覆盖 IAM 策略 |
| **托管身份(Managed Identity)** | Azure 中相当于 AWS IAM 角色的服务机制,为 Azure 资源提供自动凭据管理 |
| **资源策略** | 附加到云资源(S3 存储桶、Lambda 函数、SQS 队列)的访问控制策略,定义跨账户和公共访问 |

## 工具与系统

- **Pacu**:开源 AWS 利用框架,支持 IAM 枚举、权限提升、数据外泄和持久化
- **ScoutSuite**:多云安全审计工具,根据安全最佳实践评估 AWS、Azure、GCP 和 Oracle Cloud 的安全态势
- **Prowler**:AWS 和 Azure 安全评估工具,覆盖 CIS 基准、PCI-DSS、HIPAA 和 GDPR 合规检查
- **CloudFox**:通过分析 IAM 角色、权限和信任关系识别云基础设施中可利用攻击路径的工具
- **Steampipe**:基于 SQL 的云基础设施查询引擎,支持跨云服务商 API 的复杂查询

## 常见场景

### 场景:SaaS 公司的 AWS 云渗透测试

**背景**:一家 SaaS 公司的整个平台部署在 3 个 AWS 账户(生产、预发布、开发)。测试人员获得了开发账户中的只读 IAM 凭据。目标是确定开发账户是否可用于横向移动至生产账户。

**方法**:
1. 使用 Pacu 枚举开发账户:发现 45 个 Lambda 函数、12 个 EC2 实例、8 个 S3 存储桶和 23 个 IAM 角色
2. 发现开发者角色可以调用 Lambda 函数;某个 Lambda 函数拥有具备 S3 完全访问权限和 STS 担任角色权限的角色
3. 修改 Lambda 函数代码以担任生产账户中的跨账户角色(信任策略允许 Lambda 角色进行此操作)
4. 从已担任的生产角色枚举 S3 存储桶,在未加密的存储桶中发现客户数据
5. 发现生产 EC2 实例使用 IMDSv1,结合 Web 应用中的 SSRF 漏洞可能导致凭据窃取
6. 记录从开发只读权限到生产数据访问的完整攻击路径

**常见陷阱**:
- 未检查云服务商的渗透测试政策,意外触发自动化滥用检测
- 仅关注 IaaS(EC2、虚拟机),而忽略了包含最多敏感数据的无服务器函数、托管服务和存储
- 遗漏了跨账户信任关系,该关系提供了在云账户之间进行横向移动的途径
- 未测试 IMDSv2 强制执行情况,而这是最常见的云特定漏洞

## 输出格式

```
## 发现:跨账户角色信任允许从开发账户横向移动至生产账户

**ID**: CLOUD-002
**严重性**: 严重(CVSS 9.6)
**云服务商**: AWS
**受影响账户**: 生产账户(111222333444)
**利用来源**: 开发账户(555666777888)

**描述**:
生产账户 IAM 角色 "ProdDataAccess" 的信任策略允许开发账户中的
Lambda 执行角色 "LambdaDevRole" 担任该角色。这一跨账户信任结合开发者
修改 Lambda 函数代码的能力,创建了一条从开发只读权限到生产数据访问的路径。

**攻击链**:
1. 枚举开发账户中的 Lambda 函数:aws lambda list-functions
2. 确认 LambdaDevRole 拥有 sts:AssumeRole 权限
3. 修改 Lambda 以担任 ProdDataAccess:aws sts assume-role --role-arn arn:aws:iam::111222333444:role/ProdDataAccess
4. 从已担任角色:aws s3 ls s3://prod-customer-data -> 230 万条客户记录

**影响**:
攻击者只需入侵任一开发者凭据,即可在不直接攻击生产账户的情况下
访问生产客户数据(230 万条记录)。

**修复建议**:
1. 将 ProdDataAccess 信任策略限制为仅允许特定生产角色
2. 从 LambdaDevRole 策略中移除 sts:AssumeRole 权限
3. 实施 AWS Organizations SCP,禁止开发账户进行跨账户角色担任
4. 启用 CloudTrail 对跨账户 AssumeRole 事件的告警
5. 使用开发账户无法访问的 KMS 密钥加密 S3 存储桶
```

Related Skills

testing-websocket-api-security

9
from killvxk/cybersecurity-skills-zh

测试 WebSocket API 实现中的安全漏洞,包括 WebSocket 升级时缺少身份认证、跨站 WebSocket 劫持(Cross-Site WebSocket Hijacking,CSWSH)、通过 WebSocket 消息进行的注入攻击、输入校验不足、通过消息泛洪实施拒绝服务,以及通过 WebSocket 帧造成的信息泄露。测试人员使用 Burp Suite 拦截 WebSocket 握手和消息,构造恶意 payload,并测试 WebSocket 通道上的授权绕过。适用于 WebSocket 安全测试、WS 渗透测试、CSWSH 攻击或实时 API 安全评估相关请求。

testing-oauth2-implementation-flaws

9
from killvxk/cybersecurity-skills-zh

测试 OAuth 2.0 和 OpenID Connect 实现中的安全缺陷,包括授权码拦截、重定向 URI 操控、OAuth 流程中的 CSRF、令牌泄露、权限范围(scope)提升以及 PKCE 绕过。测试人员对授权服务器、客户端应用及令牌处理进行评估,发现可导致账户接管或未授权访问的常见错误配置。适用于 OAuth 安全测试、OIDC 漏洞评估、OAuth2 重定向绕过或授权码流程测试相关请求。

testing-mobile-api-authentication

9
from killvxk/cybersecurity-skills-zh

测试移动应用 API 的认证与授权机制,识别认证失效、不安全的令牌管理、会话固定、 权限提升和 IDOR 漏洞。适用于对移动应用后端进行 API 安全评估、测试 JWT 实现、 评估 OAuth 流程或评估会话管理的场景。适合涉及移动 API 认证测试、令牌安全评估、 OAuth 移动端流程测试或 API 授权绕过的相关请求。

testing-jwt-token-security

9
from killvxk/cybersecurity-skills-zh

在安全测试活动中,评估 JSON Web Token(JWT)实现中的密码学弱点、算法混淆攻击和授权绕过漏洞。

testing-for-xxe-injection-vulnerabilities

9
from killvxk/cybersecurity-skills-zh

在授权的渗透测试中发现和利用 XML 外部实体(XXE)注入漏洞,以读取服务器文件、执行 SSRF 并外泄数据。

testing-for-xss-vulnerabilities

9
from killvxk/cybersecurity-skills-zh

通过向反射型、存储型和 DOM 型上下文注入 JavaScript 载荷,测试 Web 应用程序的跨站脚本(XSS)漏洞, 演示客户端代码执行、会话劫持和用户冒充。测试人员识别所有注入点和输出上下文,构造适合上下文的载荷, 并绕过净化和 CSP 保护。适用于 XSS 测试、跨站脚本评估、客户端注入测试或 JavaScript 注入漏洞测试等请求场景。

testing-for-xss-vulnerabilities-with-burpsuite

9
from killvxk/cybersecurity-skills-zh

在授权的安全评估过程中,使用 Burp Suite 的扫描器、Intruder 和 Repeater 工具识别和验证跨站脚本(XSS)漏洞。适用于 Web 应用渗透测试中检测反射型、存储型和 DOM 型 XSS,验证自动化扫描器报告的 XSS 发现,以及评估 CSP 和 XSS 过滤器的有效性时使用。

testing-for-xml-injection-vulnerabilities

9
from killvxk/cybersecurity-skills-zh

测试 Web 应用程序中的 XML 注入漏洞,包括 XXE(XML 外部实体注入)、XPath 注入和 XML 实体攻击,以识别数据泄露和服务器端请求伪造(SSRF)风险。

testing-for-sensitive-data-exposure

9
from killvxk/cybersecurity-skills-zh

在安全评估中识别敏感数据暴露漏洞,包括 API 密钥泄露、响应中的 PII、不安全存储以及未受保护的数据传输。

testing-for-open-redirect-vulnerabilities

9
from killvxk/cybersecurity-skills-zh

通过分析 URL 重定向参数、绕过技术和利用链,识别并测试 Web 应用程序中的开放重定向漏洞,用于网络钓鱼和 Token 窃取。

testing-for-json-web-token-vulnerabilities

9
from killvxk/cybersecurity-skills-zh

测试 JWT 实现中的关键漏洞,包括算法混淆、none 算法绕过、kid 参数注入和弱密钥利用,以实现认证绕过和权限提升。

testing-for-host-header-injection

9
from killvxk/cybersecurity-skills-zh

测试 Web 应用程序的 HTTP Host 头部注入漏洞,以识别密码重置中毒、Web 缓存投毒、SSRF 以及虚拟主机路由操控风险。