php-auth-config-audit

$npx mdskill add wgpsec/AboutSecurity/php-auth-config-audit

Audit PHP source code for authentication, authorization, and logic flaws.

  • Detects hardcoded credentials, weak comparisons, and insecure configurations.
  • Identifies IDOR vulnerabilities and business logic errors like race conditions.
  • Analyzes JWT defects and cryptographic misuse such as MD5 or ECB.
  • Reports findings with severity ratings and code pattern comparisons.

SKILL.md

.github/skills/php-auth-config-auditView on GitHub ↗
---
name: php-auth-config-audit
description: |
  PHP 源码认证、配置与逻辑类漏洞审计。当在 PHP 白盒审计中需要检测认证绕过、
  权限控制、安全配置、密码学误用或业务逻辑漏洞时触发。
  覆盖 5 类风险: 认证绕过(硬编码凭据/弱比较/JWT 缺陷)、授权失控(IDOR/水平越权)、
  安全配置(CORS/错误暴露/调试模式)、密码学误用(弱哈希/ECB/硬编码密钥)、业务逻辑(竞争条件/支付篡改)。
metadata:
  tags: authentication, authorization, idor, config, cors, debug mode, cryptography, weak hash, business logic, 认证绕过, 授权, 越权, 配置审计, 密码学, 业务逻辑
  category: code-audit
---

# PHP 认证配置与逻辑类漏洞源码审计
本 skill 聚焦源码层面的认证、授权、配置、密码学和业务逻辑缺陷。运行时利用(如 JWT 伪造、条件竞争脚本)属于对应黑盒 exploit skill 范畴。

## 深入参考

- 5 类风险的危险模式 / 安全模式代码对比 / 检测方法 → [references/auth-config-patterns.md](references/auth-config-patterns.md)

---

## 5 类风险速查表

| 类型 | 典型模式 | 危险信号 | 严重度 |
|------|----------|----------|--------|
| 认证绕过 | 硬编码凭据、`==` 弱比较、JWT algorithm none | 登录/令牌验证逻辑 | Critical-High |
| 授权失控 | IDOR 直接引用、缺少 ownership 检查、中间件跳过 | 资源访问无权限校验 | High-Critical |
| 安全配置 | `display_errors=On`、CORS `*`、调试模式残留 | 信息泄露/跨域滥用 | Medium-High |
| 密码学误用 | `md5($pass)`、ECB 模式、硬编码密钥 | 密码存储/加解密逻辑 | High-Critical |
| 业务逻辑 | 竞争条件、支付金额可控、状态机跳步 | 交易/库存/状态流转 | High-Critical |

## 认证审计要点

- **硬编码密码/API Key**: 搜索 `password`/`secret`/`api_key`/`token` 赋值为字面量字符串的位置
- **弱比较**: `==` 对比密码/token 导致类型混淆(`"0e123" == "0e456"` 为 true),必须使用 `===` 或 `hash_equals`
- **JWT 缺陷**: algorithm confusion(RS256→HS256)、签名未验证、`alg:none` 接受、密钥泄露、`kid` 参数注入
- **Remember Me**: token 是否可预测(`md5(username.time())`)、是否绑定用户/设备
- **密码重置**: token 可预测性、token 是否绑定目标用户、是否有过期机制

## 授权审计要点

- **IDOR**: `$_GET['id']` 直接查询无 `WHERE user_id=` 归属检查,对象引用可水平篡改
- **路由级 vs 函数级权限**: 中间件挂载范围是否完整覆盖、是否存在未保护的路由
- **中间件跳过**: 路由分组遗漏、`withoutMiddleware` 滥用、OPTIONS 预检绕过
- **水平越权 vs 垂直越权**: 水平 — 同角色访问他人资源;垂直 — 低权限访问高权限功能

## 配置审计要点

- **错误暴露**: `display_errors=On` + `error_reporting=E_ALL` 泄露路径/SQL/栈信息
- **CORS**: `Access-Control-Allow-Origin: *` 配合 `Allow-Credentials: true` 允许任意源携带凭据
- **调试模式**: Laravel `APP_DEBUG=true`、ThinkPHP `app_debug`、自定义 `DEBUG` 常量残留
- **安全头缺失**: `X-Frame-Options`、`Content-Security-Policy`、`X-Content-Type-Options` 未设置

## 密码学审计要点

- **弱哈希**: `md5($pass)` / `sha1($pass)` 用于密码存储,应使用 `password_hash(PASSWORD_BCRYPT)`
- **ECB 模式**: 确定性加密,相同明文产生相同密文,可分析推断内容
- **硬编码密钥**: `KEY`/`IV`/`SECRET` 写死在源码中,搜索 `openssl_encrypt`/`mcrypt_*` 调用的密钥来源
- **弱随机数**: `mt_rand`/`rand`/`uniqid` 用于生成安全令牌,应使用 `random_bytes`/`random_int`

## 逻辑审计要点

- **竞争条件**: 余额/库存先查后减无事务/无锁(SELECT→UPDATE 无 `FOR UPDATE`)
- **支付金额篡改**: 金额从客户端传入而非服务端计算、缺少签名验证
- **状态机跳步**: 订单状态从"待支付"直接跳到"已发货",缺少状态转换合法性校验
- **批量操作无限制**: 无频率限制/无数量上限,可被滥用进行批量操作

## 检测清单

- [ ] 硬编码凭据搜索已完成(password/secret/key/token/api_key)
- [ ] 所有 `==` 比较密码/token 的位置已标记
- [ ] JWT 签名验证逻辑已审查(algorithm、密钥来源、kid)
- [ ] IDOR 风险点已检查 ownership 校验
- [ ] 路由权限覆盖完整性已验证
- [ ] php.ini / 框架配置安全基线已对照
- [ ] 密码存储方式已确认(password_hash vs md5/sha1)
- [ ] 加密密钥管理方式已审查(硬编码 vs 环境变量/密钥管理)
- [ ] 竞争条件敏感操作已检查事务/锁机制
- [ ] 支付/交易流程的金额来源和签名验证已确认

More from wgpsec/AboutSecurity

SkillDescription
401-403-bypass401/403 访问拒绝绕过方法论。当遇到管理后台、API 端点返回 401/403 Forbidden 时使用。覆盖路径操纵、HTTP 方法篡改、Header 注入、协议降级、组合攻击
ad-acl-abuseActive Directory ACL 滥用攻击方法论。当 BloodHound 发现 GenericAll/WriteDACL/WriteOwner/GenericWrite/ForceChangePassword 等危险 ACE 时使用。覆盖 ACE 枚举、权限滥用链、Shadow Credentials、RBCD 攻击
ad-delegation-attackKerberos 委派攻击(非约束/约束/RBCD)。当 BloodHound 发现委派配置、或已获取有 SPN 的服务账号/机器账号控制权时使用。通过 S4U 协议滥用可实现跨服务模拟任意用户,常用于域内权限提升和横向移动。
ad-domain-attackActive Directory 域环境攻击全链路。当目标主机在域环境中(systeminfo 显示 Domain 非 WORKGROUP)、发现 88/389/636 端口、或获取到域用户凭据时使用。覆盖域信息收集、用户枚举、Kerberoasting、AS-REP Roasting、委派攻击、ACL 滥用、DCSync、Golden/Silver Ticket
ad-persistenceAD 域环境持久化技术。当已获取域管/本地管理员权限、需要建立持久访问以确保重启或密码更改后仍能回到目标环境时使用。覆盖主机级持久化(计划任务/注册表Run/COM劫持/WMI事件订阅/Windows服务/启动文件夹)、域级持久化(Golden Ticket/Silver Ticket/Skeleton Key/DSRM/AdminSDHolder)、DCShadow/GoldenGMSA高级技术、清理命令与检测规避
ad-trust-attack域信任关系攻击。当目标存在多域/多林环境时使用。包含父子域提权(Golden Ticket + ExtraSid)、跨林攻击(SID History/MSSQL Trust Links)、单向信任利用。已获取子域 Domain Admin 或发现信任关系时优先加载。
adcs-certipy-attackActive Directory Certificate Services (ADCS) 证书攻击。当发现域内有 CA 服务器、ADCS Web Enrollment、证书模板配置错误时使用。覆盖 ESC1-ESC11 所有证书滥用路径、Certipy 工具链、证书伪造、NTLM 中继到 ADCS。发现 ADCS/CA/证书/certsrv 相关内容时一定要使用此技能
adinfo-enum使用 Adinfo 进行 Active Directory 信息收集。当获得域用户凭据后需要快速收集域环境信息时使用。Adinfo 是一个快速 AD 信息收集工具,一条命令输出域控列表、域管用户、信任关系、GPO、SPN、委派配置等关键信息——比手动 LDAP 查询快得多。发现域环境后第一步信息收集使用此技能
agent-security|
ai-data-security|