关于 api-security-testing
用于评估 REST、GraphQL、gRPC 和 WebSocket 接口的 API 安全测试技能,依据 OWASP API Top 10 检查问题。它强调直接请求 API、验证授权与资源限制,并记录可复现的证据。
主要功能
- 01依据 OWASP API Top 10 测试
- 02从 API 规范梳理操作
- 03检查对象、字段和功能授权
- 04测试速率、大小和查询限制
- 05检查原始响应中的过量数据
- 06记录请求、响应与影响
适用场景
- 01评估不同用户账户间的授权
- 02检查 GraphQL 内省和查询限制
- 03查找未记录或过时的 API 端点
- 04检查 API 响应是否暴露字段
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ mn-youssef/ security-skills --skill api-security-testing安装后在 Claude Code 中输入/api-security-testing确认已加载。
附带文件references/api-attacks.md
详细介绍
API 安全测试(查找/利用 — OWASP API Top 10)
概述
现代应用以 API 为先,而 API 的故障模式与网页不同:漏洞在于对象/字段级授权和资源限制,而非页面渲染。直接测试 API,完全绕过 UI。
核心原则: UI 只是一个客户端;攻击者会直接向 API 发送原始请求。每个端点、字段和方法都必须自行执行授权和限制——前端无法提供任何保护。
适用情况 / 跳过情况
- 适用情况: 应用提供可通过程序调用的 API——REST、GraphQL、gRPC 或 WebSocket,包括 SPA 或移动客户端背后的 API。
- 跳过情况: 应用完全由服务器渲染 HTML,没有任何人会调用的 API → N/A。
- 如果为 N/A: 报告“api-security-testing: N/A — 无 API 接口”,然后停止。
⚠️ 授权
仅测试你自己的或已获授权的 API。对于有状态测试,请使用测试账户和非生产环境实例。
先获取规范
先获取契约,再测试其中(以及 UI)揭示的每项操作:
- OpenAPI/Swagger(
/swagger、/openapi.json、/api-docs)、GraphQL 内省、 gRPC 反射、Postman 集合、通过代理捕获移动应用流量。 - 对比文档中列出的端点与应用实际调用的端点——未记录的端点价值极高。
OWASP API Top 10 — 检查清单
| # | 风险 | 测试 |
|---|---|---|
| API1 | BOLA(对象授权) | 跨账户替换对象 ID → 参见 access-control-testing |
| API2 | 身份验证失效 | 弱令牌/JWT/密钥 → 参见 authentication-testing |
| API3 | BOPLA(属性授权) | 读取不该读取的字段(过度暴露)/写入不该写入的字段(批量赋值) |
| API4 | 不受限制的资源消耗 | 无速率/大小/分页限制;昂贵查询;成本/DoS |
| API5 | BFLA(功能授权) | 以普通用户身份调用管理员/特权操作 |
| API6 | 不受限制的业务流访问 | 自动化原本要求人工控制节奏的流程(抢购、垃圾信息) |
| API7 | SSRF | 服务器获取你提供的 URL → 参见 file-upload-and-ssrf |
| API8 | 配置错误 | 错误信息过于详细、CORS 设置过于宽松、缺少安全标头 |
| API9 | 库存管理不当 | /v1 与 /v2 并存、暂存 API、未记录的端点 |
| API10 | 不安全的第三方 API 消费 | 应用盲目信任外部 API 的响应 |
REST、GraphQL、gRPC 和 WebSocket 的测试方法见 references/api-attacks.md。
相较于 UI 的过度数据暴露
API 返回的数据通常比 UI 显示的更多(完整用户对象包含 passwordHash、内部标记、其他用户的字段)。检查原始 JSON 响应,而不是渲染后的页面。
GraphQL 特有情况(高价值)
- 启用内省 → 可获取完整的架构映射。获取它。
- 批处理/别名 → 绕过速率限制,通过单个请求进行暴力破解。
- 查询深度/复杂度 → 通过嵌套递归查询造成 DoS。
- 字段级授权 → 在一个查询中受保护的字段,可能通过另一条路径/变更暴露。
输出
每项发现都应包含:端点/操作、方法、使用的账户、原始请求/响应、对应的 API Top 10 类别以及影响。BOLA/BFLA 发现通常为高危至严重。
交接
深入授权问题 → access-control-testing;身份验证/JWT → authentication-testing;流程滥用 →
business-logic-testing;复现 → active-pentest;修复 → security-hardening。
常见错误
- 只通过 UI 测试——直接访问 API;那里才是真正的攻击面。
- 查看渲染后的页面,而不是原始 JSON——过度暴露就藏在其中。
- 忘记 GraphQL 内省/批处理和 gRPC 反射——它们会直接提供完整映射。
- 忽略旧版 API——
/v1通常缺少/v2中的修复。