SuperAPI AI 工具集

testing-api-for-mass-assignment-vulnerability

安全与审计

查看项目

更新于 10-16 06:49

技能介绍

用途:检测 API 是否将客户端提交的全部属性直接绑定到数据模型,从而允许用户写入本应受保护或不可写的字段,对应 OWASP API3:2023(对象属性级授权)。

主要能力:

  1. 识别接受 JSON/XML 请求体的写操作端点(注册、用户资料更新、对象创建、订单、评论、设置等),并提取预期字段。
  2. 向请求体注入权限与敏感字段,覆盖角色提升(role、user_role、userRole、account_type)、管理员标记(is_admin、isAdmin、is_superuser)、权限覆盖(permissions、scopes、groups、roles)、账户状态(is_active、verified、email_verified)、财务字段(balance、credit、discount、price、amount)、归属(user_id、owner_id、created_by)、内部与时间字段。
  3. 通过重新获取对象状态,确认注入字段是否真正持久化,而非仅返回 200/201。
  4. 提供 Rails、Django REST Framework、Express/Mongoose、Spring Boot 等框架的针对性载荷,如嵌套模型名、MongoDB 操作符注入、Spring4Shell 风格字段。
  5. 针对电商场景测试订单价格、折扣、运费、支付状态、钱包余额等财务篡改。

使用方式:需先取得书面授权并明确目标与范围;准备不同权限级别的测试账号、API 文档或 OpenAPI 规范、Burp Suite Professional,以及 Python 3.10+ 与 requests 库。脚本流程包括:确定可写端点与预期参数→注入特权字段→验证状态变化→执行框架特定载荷→测试订单与财务对象。常用工具包括 Burp Repeater/Intruder、Param Miner、Arjun、OWASP ZAP、Postman。

适用场景:评估用户注册、资料更新、对象创建等接口是否允许越权写入;验证服务端是否按角色限制可写属性;检查使用 ORM 自动绑定参数的框架(Rails、Django、Express、Spring)是否存在该问题。

限制与注意:测试具有潜在破坏性,必须在明确授权下进行。部分 API 返回 200 但静默忽略未知字段,需通过状态验证确认。仅屏蔽 role 而忽略 isAdmin、is_admin、admin 等变体可能产生遗漏;创建与更新端点过滤规则可能不同,需分别测试。仅凭资料无法确认目标接口一定存在漏洞,结果应以实际验证为准。