PHP Web 业务逻辑漏洞审计工具。识别认证/授权以外的逻辑缺陷:Mass Assignment、流程绕过、竞态条件、状态机缺陷、支付/权限时序漏洞等,输出证据链、分级、PoC 与修复建议(禁止省略)。
Scanned 9/4/2026
Install to Claude Code
npx -y skills add NeverSight/skills_feed --skill php-logic-audit --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Php Logic Audit?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/neversight-php-logic-audit)More formats (shields.io, HTML) on the badges page.
---
name: php-logic-audit
description: PHP Web 业务逻辑漏洞审计工具。识别认证/授权以外的逻辑缺陷:Mass Assignment、流程绕过、竞态条件、状态机缺陷、支付/权限时序漏洞等,输出证据链、分级、PoC 与修复建议(禁止省略)。
---
# PHP 业务逻辑漏洞审计(php-logic-audit)
分析 PHP 项目中“业务流程正确性”相关缺陷。重点覆盖:
- Mass Assignment(批量赋值导致可越权字段被写入)
- 流程绕过(前置状态缺失或校验可被跳过)
- 状态机缺陷(状态更新不完整/可回滚/不一致)
- 竞态条件(TOCTOU、并发导致多次发放、重复扣款等)
- 越权的业务层校验缺失(与 IDOR 联动,但更关注业务归属一致性)
- 付款/退款/异步任务顺序漏洞(异步回调可被伪造或重复处理)
## 分级与编号
- 详见:`shared/SEVERITY_RATING.md`
- 漏洞编号:`{C/H/M/L}-LOGIC-{序号}`
## 必检证据(强制)
每条逻辑漏洞必须提供:
1. 触发路由与方法(真实路由/HTTP 方法)
2. 状态前置条件(攻击者需要满足哪些条件:登录态/角色/资源状态)
3. 缺陷点位置(业务服务/控制器/回调 handler/队列消费逻辑)
4. 状态变化链(从输入 -> 校验 -> 写库/调用外部服务 -> 状态更新)
5. 与并发/时序相关证据(如果有:事务边界/锁/唯一约束/幂等处理)
## Mass Assignment 审计(必做)
必须检测:
- 是否存在把 `$_POST/Request->all()/request()->all()` 直接写入模型或数据库的行为
- 是否存在允许更新敏感字段的白名单缺失(如 `role/is_admin/status/price/owner_id`
- ORM/框架的填充保护是否启用(例如 Laravel `$fillable/$guarded`)
## 竞态与幂等审计(必做)
必须检测:
- 同一操作是否在并发下被执行多次(扣款、发货、升级、领取)
- 是否依赖“先查再写”(TOCTOU)且缺少事务/行锁
- 是否有幂等键与去重(如 payment_id/nonce)
## 流程绕过审计(必做)
必须检测:
- 是否只在前置页面校验但后端缺少校验
- 是否依赖前端隐藏字段/按钮来限制流程
- 回调接口是否鉴权与签名可靠、是否可被重复调用
## 类型比较绕过与弱类型漏洞(必做)
PHP 中的弱类型/宽松比较经常导致认证/授权/业务判断绕过,必须审计:
- 是否存在使用 `==`/`!=`(非严格比较)进行鉴权判断、状态判断或权限校验
- 是否存在 `in_array($x, $arr)` 未设置严格模式(第三参),导致类型转换绕过
- 是否存在 `array_search`、`strpos` 等结果参与条件判断时未正确处理(例如 `strpos` 返回 0 被当成 false,或与字符串/数字混用)
- 是否存在 `md5/sha1` 用于“认证校验”且直接用 `==` 比较摘要(必须识别是否使用 `hash_equals`)
- 是否存在 token/JWT/验证码比较逻辑使用了可被时序推断或类型胶水绕过的方式(比较函数/条件表达式需证据化)
每条弱类型漏洞必须给出:
- 位置证据(比较表达式/条件语句/相关函数调用位置)
- Source(用户输入如何进入该比较)
- Sink(错误比较导致的分支结果:放行/绕过/错误状态)
- PoC(请求序列或 payload,至少包含“对比值如何构造触发绕过”)
## 认证/账户工作流逻辑(必做)
必须审计与“状态迁移”相关的业务流程安全:
- 密码重置 token 是否单次使用、是否有明确过期时间、是否与用户绑定
- OTP/验证码是否存在重放(同一 token/nonce 是否能重复使用)
- 登录失败次数/账户锁定/速率限制是否实现且发生在后端
- 账户枚举:错误信息/响应码/耗时差异是否泄露是否存在用户
- 支付/退款回调是否幂等(同一 transaction 是否重复入账/重复发放)
PoC 必须给出至少两步请求序列:先建立前置状态,再触发状态迁移动作,并标注观测点(数据库字段/响应码/重定向/回调执行次数)。
## PoC(强制)
逻辑漏洞 PoC 必须给出“请求序列”:
- 至少两步:触发前置条件 -> 触发漏洞动作(并标注真实路由)
- 若是竞态漏洞:给出并发请求方式与观测点(例如两个 curl 同时发送的步骤)
## 报告输出
```
{output_path}/vuln_audit/logic_{timestamp}.md
```
## 条目模板(强制)
- 位置证据
- 缺陷描述(必须基于代码语义,不可只用一般性话术)
- 状态变化链
- 可利用前置条件
- 请求序列 PoC
- 修复建议(包括:白名单/事务/锁/幂等/后端二次校验)
Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!