skills/cloud/aws-iam-policy-analysis/SKILL.md
AWS IAM / Resource Policy 分析方法论。当目标涉及 AWS 云服务且提供了 IAM Policy、Resource Policy、Lambda 代码、CloudFormation 模板等策略文件时使用。覆盖 IAM Policy 危险模式识别、Resource Policy Principal 分析、Condition 键绕过模式、服务信任关系图推导。发现 AWS 策略文件(json/yaml)、*.amazonaws.com 端点、IAM ARN 时应使用此技能
npx skillsauth add wgpsec/AboutSecurity aws-iam-policy-analysisInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
拿到 AWS 策略文件(IAM Policy、Resource Policy、Lambda 代码等)后的系统化分析方法。核心目标:从策略中推导攻击面,而非盲目枚举。
"Principal": "*" 意味着跨账户/匿名访问,是最高优先级检查项StringLike 通配符在不同协议/上下文中含义不同拿到附件/下载的文件后,先分类:
| 文件类型 | 识别方式 | 关注点 |
|---------|---------|--------|
| IAM Policy | "Version": "2012-10-17", "Statement" | Action/Resource 范围 |
| Resource Policy | 同上,但有 Principal 字段 | 谁能访问、条件限制 |
| Lambda 代码 | .py/.js 文件,handler(event, context) | 输入处理、路径拼接、注入点 |
| CloudFormation | AWSTemplateFormatVersion, Resources | 完整架构、角色绑定 |
| Trust Policy | "Action": "sts:AssumeRole" | 角色可被谁 assume |
🔴 "Principal": "*" → 任何 AWS 身份(含匿名)可访问
🔴 "Principal": {"AWS": "*"} → 同上
🟡 "Principal": {"Service": "lambda.amazonaws.com"} → 特定服务可调用
🟢 "Principal": {"AWS": "arn:aws:iam::123456:root"} → 限定账户
| Action 模式 | 风险 |
|------------|------|
| "Action": "*" | 🔴 完全控制 |
| "Action": "s3:*" | 🔴 S3 完全控制 |
| "Action": ["s3:GetObject", "s3:PutObject"] | 🟡 可读可写 |
| "Action": "s3:GetObject" on "Resource": "*" | 🟡 可读所有 Bucket |
| "Action": "sts:AssumeRole" | 🟡 可切换角色(权限提升入口) |
| "Action": "iam:PassRole" | 🟡 可传递角色(间接提权) |
| "Action": "lambda:InvokeFunction" with Principal:* | 🔴 任何人可调用 Lambda |
🔴 "Resource": "*" → 所有资源
🟡 "Resource": "arn:aws:s3:::bucket/*" → bucket 内所有对象
🟢 "Resource": "arn:aws:s3:::bucket/public/*" → 仅 public 前缀
// StringLike 通配符 — 不同上下文含义不同
"Condition": {"StringLike": {"sns:Endpoint": "*@company.com"}}
// email 协议: Endpoint = 邮箱 → 必须是 [email protected]
// https 协议: Endpoint = URL → URL 中包含 @company.com 即可绕过
// IpAddress 条件 — 可能有 VPN/代理绕过
"Condition": {"IpAddress": {"aws:SourceIp": "10.0.0.0/8"}}
// StringEquals vs StringLike — 前者精确匹配,后者支持通配符
从策略文件中画出"谁信任谁"的调用关系:
读取所有策略文件
↓
识别所有 Principal(谁是调用者)
↓
识别所有 Resource(谁被访问)
↓
连线: Principal → Action → Resource
↓
找到最弱一环(Principal:* 或过宽权限的边)
常见服务关系:
关键: 分析 Lambda Execution Role 的权限 — 这决定了 Lambda 能访问什么资源。
拿到 Lambda 代码(handler.py/index.js)后重点检查:
| 漏洞类型 | 代码模式 | 利用方式 |
|---------|---------|---------|
| 路径穿越 | os.path.join(prefix, user_input) | 绝对路径绕过:/flag |
| 命令注入 | os.system(f"cmd {user_input}") | ; cat /flag |
| SSRF | requests.get(user_input) | http://169.254.169.254/... |
| 环境变量泄露 | os.environ['SECRET'] | 错误信息/Stack Trace |
| SQL 注入 | 字符串拼接 SQL | ' OR 1=1 -- |
| 反序列化 | pickle.loads()/yaml.load() | 构造恶意对象 |
# 从目标页面提取 AWS 相关 URL
curl -s TARGET_URL | grep -oE 'https?://[a-z0-9.-]+\.amazonaws\.com[^"]*'
curl -s TARGET_URL | grep -oE 'https?://[a-z0-9]+\.execute-api\.[a-z0-9-]+\.amazonaws\.com[^"]*'
# 从 JS/HTML 中提取 S3 Bucket、API GW URL
curl -s TARGET_URL | grep -oE 's3\.amazonaws\.com/[^"]*'
# Presigned URL 信息泄露
# X-Amz-Credential 包含 AccessKeyId 和 Region
# webhook.site — 接收 AWS 服务回调(SNS、S3 Event 等)
# 当需要外部 Endpoint 接收 AWS 推送时使用
# AWS CLI 策略检查
aws iam get-policy-version --policy-arn ARN --version-id v1
aws s3api get-bucket-policy --bucket BUCKET
aws lambda get-policy --function-name FUNC
# ScoutSuite — AWS 安全配置审计
# Prowler — AWS 安全基线检查
testing
Azure 云环境渗透测试总体方法论。当目标使用 Azure/Microsoft 365/Entra ID、发现 Azure 相关资产(Blob Storage/App Service/Azure VM/Azure Functions)、获取 Azure 凭据(Service Principal/Managed Identity/Access Token)、或需要对 Azure 环境进行安全评估时使用。提供从未授权枚举到 Entra ID 攻击、服务提权、Cloud-to-OnPrem 横向移动的全流程决策树。覆盖 35+ Azure 服务攻击面
tools
Mythic C2 操作方法论。当需要部署 Mythic、选择 Mythic Agent、安装 C2 Profile、配置 HTTP/DNS/WebSocket/SMB/TCP 通信、生成 payload、管理回连任务,或把 Mythic 作为跨平台 C2 框架用于授权红队演练时使用。覆盖 mythic-cli 安装、Agent/Profile 选择、SSL 证书配置、payload 构建和基础 OPSEC 判断
development
Docker 安全测试与容器渗透方法论。当需要评估 Docker 容器、Docker Daemon、Docker Registry、镜像层、构建产物或容器逃逸风险时使用。覆盖容器环境识别、特权容器逃逸、docker.sock/Remote API 利用、procfs/cgroup/capabilities 滥用、Docker 用户组提权、运行时/内核 CVE、Registry 枚举、镜像层 Secret 分析和构建上下文泄露。发现 Docker 容器环境、Registry 暴露、镜像凭据或容器配置错误时应使用此技能
development
使用 PadBuster 进行 Padding Oracle 攻击。当发现 Web 应用使用 CBC 模式加密且存在 Padding Oracle 漏洞时使用。PadBuster 可自动解密密文和伪造任意明文对应的合法密文,适用于加密 Cookie/Token/URL 参数。任何涉及 Padding Oracle 攻击、CBC 密文解密、Cookie 伪造的场景都应使用此技能