API授权与BOLA漏洞测试
将以下提示词粘贴到你的 AI 对话框中:
请根据 https://skillhub.cn/install/skillhub.md,安装 @user_3c6cb52e/api-authorization-and-bola-jsgw。
技能介绍
面临的问题
当 API 暴露对象 ID、嵌套资源或角色敏感功能时,越权访问(BOLA/BFLA)和批量赋值往往是最常见且危害极大的漏洞。开发者常在单一请求路径上实现鉴权,却忽略了同级端点、嵌套资源、备用 HTTP 方法或隐藏字段的管控,导致攻击者可以通过篡改 ID 或注入隐藏参数获取未授权数据。
技能的工作方式
该技能提供了一套结构化的测试循环,帮助安全工程师系统性地排查上述风险:
- 双账户准备:创建 Account A(正常用户)和 Account B(越权测试用户)。
- 流程捕获:以 Account A 身份执行
create、read、update和delete操作,记录完整请求。 - Token 重放:提取 Account B 的凭证,重放上述请求,验证是否存在 BOLA(越权对象访问)或 BFLA(越权函数访问)。
- 面扩展探测:
- 测试同级和嵌套端点(如 /api/v1/orders/123 与 /api/v1/users/1/invoices/9)。
- 尝试 PUT、PATCH、DELETE 等备用动词。
- 注入隐藏的 JSON 字段(如 role、tier、org)以检测批量赋值漏洞。
适用边界与注意事项
在测试过程中,需特别留意容易被忽视的隐蔽 payload 载体。对象 ID 可能隐藏在 HTTP header、Cookie 或 GraphQL 参数中。此外,即使父级资源通过了鉴权检查,子资源也可能处于未授权状态;部分接口在复用相同路由时,备用方法的鉴权逻辑可能比主方法更弱。
请注意,该技能聚焦于应用层的授权逻辑测试。若需排查 JWT 令牌本身的签名与声明滥用、GraphQL 隐藏参数发现,或非 API 环境下的传统 IDOR 漏洞,请结合相关的 JWT 或 GraphQL 专项技能进行深入测试。
使用场景
- 为 API 设计基于角色的访问控制(RBAC),需要验证普通用户与管理员权限的隔离是否彻底
- 编写自动化渗透测试脚本,针对对象 ID 遍历和嵌套资源 IDOR 生成测试用例
- 在 CI/CD 流水线中加入安全检测环节,验证 PUT/PATCH/DELETE 方法对同一路由的鉴权一致性
- 审计 API 文档,检查 create 请求是否遗漏了对隐藏字段(role, tier 等)的写入限制
适合人员
- 后端工程师:需要确保 API 对象级授权逻辑覆盖同级和嵌套端点,防止越权漏洞
- 安全测试工程师:负责对 API 进行 BOLA/BFLA 渗透测试,需要标准化的双账户测试流程
- DevSecOps 工程师:需要在 CI 流水线中集成自动化安全检测,验证 HTTP 方法滥用和批量赋值风险
- API 平台开发者:正在构建多租户或 RBAC 系统,需要验证隐藏字段过滤和嵌套资源权限继承