常见漏洞验证121 条

流程与状态机检查

多步流程(审批、实名、退款、报销)每步都应在服务端校验前置状态:跳过中间步骤直达终态是高频问题。

状态机检查看什么

多步业务流程(审批、实名认证、售后、开票、报销)每一步都应在服务端校验前置状态:只有待审核状态才能审批,只有已支付才能退款。高频问题是服务端信任前端传回的步骤标识,导致跳过中间环节直达终态;另一个常见问题是乱序调用,先调终态接口再补前置动作。检查方法是梳理状态与接口映射,然后在测试数据上尝试跳步。

基本信息

适用对象审批链、实名认证、售后与退款、开票、报销流程
检查方法先梳理状态与接口映射,再尝试乱序与跳步调用
判定标准非法状态迁移被服务端按规则拒绝并留审计记录
参考标准OWASP WSTG-BUSL-06、CWE-841

典型使用场景

  • 线上审批与合同签署流程的逻辑核查
  • 售后与退款流程是否存在跳过审核的路径
  • 实名认证与风控流程能否被绕过
  • 复杂订单状态(部分发货、部分退款)的一致性验证
  • 为服务端状态机重构提供现状清单

验证步骤

验证步骤
1. 梳理流程状态与对应接口,记录正常调用顺序(画成状态迁移图)
2. 在测试数据上尝试乱序调用:先调终态接口,再补前置动作
3. 尝试跳步调用:跳过审核直接进入已完成、跳过支付直接发货
4. 观察服务端是否正确拒绝,以及是否留下审计日志
5. 记录:接口、调用顺序、返回结果、最终数据状态

状态与非法迁移

状态迁移期望行为常见问题
待审核 → 已通过校验审批权限与前置条件任意角色可审批
未支付 → 已发货拒绝并提示状态错误仅按请求参数放行
已退款 → 再次退款幂等拒绝重复退款
已关闭 → 重新激活需明确的重开流程任意接口可改回激活
已完成 → 修改金额禁止修改或走变更流程状态与金额脱钩
修复视角:状态迁移集中在服务端一处管控,前端只展示可用操作;非法迁移统一返回错误并写入审计日志,便于事后追溯。
测试跳步请使用测试数据与测试工单:在生产单据上验证会造成流程混乱,也可能触发真实的资金或货物动作。

易错点

  • 只测单接口的权限,不测状态顺序,跳步问题整片漏掉
  • 用生产工单做跳步验证,造成流程混乱与真实业务影响
  • 测试后未清理残留状态,数据长期停留在非法状态
  • 只看接口是否返回成功,不核对最终数据状态是否合法
  • 忽略部分成功场景(部分发货、部分退款),状态机在边界上出错

数据来源与参考

  • OWASP WSTG WSTG-BUSL-06
  • CWE-841(Behavioral Workflow)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌