Performs authorized penetration testing on AWS, Azure, and GCP, identifying IAM misconfigurations, exposed storage buckets, loose security groups, serverless vulnerabilities, and cloud attack paths using Pacu and ScoutSuite.
npx claudepluginhub killvxk/cybersecurity-skills-zhThis skill uses the workspace's default tool permissions.
- 在从本地迁移到云环境前后评估云基础设施的安全态势
Guides authorized penetration testing on AWS, Azure, GCP clouds using Pacu, ScoutSuite, Prowler for IAM exploits, SSRF to metadata, and MITRE ATT&CK reporting. For security assessments.
Guides authorized penetration testing of AWS, Azure, GCP environments, covering shared responsibility scoping, tools like Pacu/ScoutSuite, IAM exploits, SSRF attacks, and MITRE ATT&CK reporting.
Guides authorized penetration testing of AWS, Azure, GCP cloud environments using shared responsibility model, tools like Pacu/ScoutSuite, IAM exploits, SSRF attacks, and MITRE ATT&CK reporting.
Share bugs, ideas, or general feedback.
不适用场景:未同时获得云账户所有者书面授权以及遵守云服务商渗透测试政策(AWS 大多数服务无需事先审批;Azure 和 GCP 某些测试类型需提前通知或审批)。
枚举云环境以映射攻击面:
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 数据库run iam__enum_permissions、run iam__enum_users_roles_policies_groupsAzure 枚举:
az account list — 列出订阅az ad user list — 列出 Azure AD 用户az vm list — 列出虚拟机az storage account list — 列出存储账户az keyvault list — 列出密钥保管库az webapp list — 列出 Web 应用程序跨云:
scout aws --profile <profile> 或 scout azure --cliprowler aws测试 IAM 策略的权限提升路径:
AWS IAM 提权:
aws iam get-user-policy、aws iam list-attached-user-policiesiam:CreatePolicyVersion — 创建授予管理员访问权限的新策略版本iam:SetDefaultPolicyVersion — 将旧版、更宽松的策略版本设为默认iam:PassRole + lambda:CreateFunction + lambda:InvokeFunction — 创建带高权限角色的 Lambdaiam:AttachUserPolicy — 为当前用户附加 AdministratorAccess 策略sts:AssumeRole — 若信任策略允许则担任更高权限角色run iam__privesc_scanAzure 身份提权:
az role assignment list --assignee <user>测试云存储服务的数据暴露情况:
aws s3 ls s3://<bucket> --no-sign-requestaws s3api get-bucket-acl --bucket <bucket>aws s3api get-bucket-policy --bucket <bucket>aws s3api list-object-versions --bucket <bucket>测试计算资源的漏洞:
http://169.254.169.254/latest/meta-data/iam/security-credentials/ 以提取 IAM 角色凭据aws lambda get-function --function-name <name>)并检查硬编码凭据、不安全依赖和注入漏洞aws ec2 describe-instance-attribute --instance-id <id> --attribute userData 查找启动脚本中的凭据测试网络控制的错误配置:
| 术语 | 定义 |
|---|---|
| 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 队列)的访问控制策略,定义跨账户和公共访问 |
背景:一家 SaaS 公司的整个平台部署在 3 个 AWS 账户(生产、预发布、开发)。测试人员获得了开发账户中的只读 IAM 凭据。目标是确定开发账户是否可用于横向移动至生产账户。
方法:
常见陷阱:
## 发现:跨账户角色信任允许从开发账户横向移动至生产账户
**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 存储桶