用途:在通用代码审计方法(上下文→攻击面→漏洞类排查→变体分析→四问验证门)之上,补充 PHP 特有的危险汇点与陷阱清单,用于审计 PHP 源码、插件以及 WordPress、Magento、Joomla、Laravel 应用,追踪 RCE、LFI、SQLi、对象注入路径,判断 unserialize、include、== 比较用户输入是否可利用。不适用于非 PHP 语言通用审计、查找 webshell 后门、构造反序列化利用链、黑盒测试或仅审查代码差异。
主要能力:按漏洞类列出汇点并追踪用户输入(超全局变量、请求头、上传文件名、曾是用户输入的库值)到汇点。RCE 侧含 eval、assert(字符串参数,8.0 前)、preg_replace 的 /e(7.0 前)、create_function、mb_ereg_replace 的 e 选项,system/exec/shell_exec 等命令执行,以及动态调用与回调。对象注入侧强调 unserialize 用户数据即为对象注入,依赖 POP 链,危险文件本身常无危险代码;phar:// 是伪装的 unserialize,PHP 8.0 前对 phar:// 路径的任何文件操作会自动反序列化元数据,8.0 起仅显式 Phar::getMetadata() 反序列化,需先确认运行时版本。LFI/RFI 含 include/require 与 php://filter、php://input、data://、phar://、zip:// 等包装器;SQLi 含字符串拼接、$wpdb->query 未用 prepare 或占位符外插值、表列名占位;类型混淆含 == 与魔法哈希认证绕过、strcmp 数组行为;还涉及 extract/变量变量、SSRF 与上传扩展名与执行目录。生态侧给出 WordPress(nonce 仅防 CSRF、须查 current_user_can)、Magento、Laravel 常见问题。
使用方式:先套用通用审计方法论,再按本清单逐项追踪源到汇点,确认可达性(认证、路由、PHP 版本),演示影响再报告;无可用 gadget 的 unserialize 或 PHP 8 上的 /e 只能算加固建议。
限制:内容依赖对目标 PHP 版本的准确判断,版本不明时结论不可定;未提供具体工具安装或代码示例之外的执行步骤。