mcpField
A
api-security-testing

api-security-testing

github.com/mn-youssef安全4993 次安装20 周前更新
代码仓库

关于 api-security-testing

用于评估 REST、GraphQL、gRPC 和 WebSocket 接口的 API 安全测试技能,依据 OWASP API Top 10 检查问题。它强调直接请求 API、验证授权与资源限制,并记录可复现的证据。

主要功能

  1. 01依据 OWASP API Top 10 测试
  2. 02从 API 规范梳理操作
  3. 03检查对象、字段和功能授权
  4. 04测试速率、大小和查询限制
  5. 05检查原始响应中的过量数据
  6. 06记录请求、响应与影响

适用场景

  1. 01评估不同用户账户间的授权
  2. 02检查 GraphQL 内省和查询限制
  3. 03查找未记录或过时的 API 端点
  4. 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 — 检查清单

#风险测试
API1BOLA(对象授权)跨账户替换对象 ID → 参见 access-control-testing
API2身份验证失效弱令牌/JWT/密钥 → 参见 authentication-testing
API3BOPLA(属性授权)读取不该读取的字段(过度暴露)/写入不该写入的字段(批量赋值)
API4不受限制的资源消耗无速率/大小/分页限制;昂贵查询;成本/DoS
API5BFLA(功能授权)以普通用户身份调用管理员/特权操作
API6不受限制的业务流访问自动化原本要求人工控制节奏的流程(抢购、垃圾信息)
API7SSRF服务器获取你提供的 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 中的修复。

评论

支持 Markdown