PHP WordPress 框架安全审计(php-wordpress-audit)
用于分析 WordPress 项目中的框架机制安全问题,重点覆盖以下方面:
- nonce 校验与 capability 权限检查(防止 CSRF 与越权)
- WordPress AJAX 回调(admin-ajax.php 的 wp_ajax_* 与 wp_ajax_nopriv_*)
- 输出 escaping 与模板注入风险(esc_html/esc_attr/esc_url/wp_kses 等)
- $wpdb 查询参数化与直接拼接风险
- 重定向(wp_redirect 与 wp_safe_redirect)
- 上传处理(wp_handle_upload)与可执行文件风险
- 远程 HTTP(wp_remote_get/wp_remote_post)与 SSRF 关联
输入
用户提供 source_path:WordPress 代码目录根(含 wp-content/plugins 或主题目录)。可选 output_path:输出目录路径,默认 {source_path}_audit。
输出
输出到 {output_path}/framework_audit/ 下的 wordpress_{timestamp}.md。
框架识别(必做)
必须给出识别 WordPress 的证据点,不允许空口断言:目录特征(wp-content/、wp-admin/、wp-includes/)、核心文件(wp-config.php 或 wp-settings.php)、插件/主题目录(wp-content/plugins/、wp-content/themes/)。
风险类型映射(必做)
每条发现都必须写明通用类型码(AUTH / CSRF / XSS / SQL / CFG / SSRF / UPLOAD 等),以及映射原因(为什么 WordPress 风险落到该类型码)。
必审清单(必做:逐项检查并输出结果)
-
nonce 与 CSRF 防护(CSRF/AUTH) 必须定位并输出:表单输出 nonce(wp_nonce_field 或自定义 nonce 输出)、提交处校验(check_admin_referer、wp_verify_nonce 的位置)、AJAX nonce 校验(check_ajax_referer,若存在)。判定规则:若 nonce 存在但校验缺失或仅做在部分分支输出,则输出 CSRF 或 AUTH 风险。
-
capability 权限校验(AUTH) 必须定位并输出:所有敏感操作调用前(current_user_can、user_can、is_user_logged_in)、capability 值是否被用户控制或过宽(例如只做 manage_options 缺失但仍执行高权限操作)。
-
AJAX action 与路由暴露(AUTH/CSRF) 必须定位并输出:add_action('wp_ajax_{action}', {value}) 与 add_action('wp_ajax_nopriv_{action}', {value})、回调函数内部是否对能力与 nonce 做校验。
-
输出 escaping 与 XSS(XSS) 必须定位并输出:直接 echo/print 用户数据的点、是否使用 esc_html、esc_attr、esc_url、wp_kses_post 等、插件主题是否禁用了过滤或使用了 raw 输出。
-
$wpdb 查询参数化(SQL) 必须定位并输出:正确路径($wpdb->prepare 与 prepare 占位符使用)、危险路径($wpdb->query、get_results、get_row 直接拼接 SQL 字符串)。
-
重定向与跳转安全(REDIR/CFG) 必须定位并输出:wp_redirect 与 wp_safe_redirect 使用情况、目的地来源(通常为用户输入)与是否做 scheme/host 校验。
-
上传与远程请求(UPLOAD/SSRF) 必须定位并输出:上传(wp_handle_upload、media_handle_upload,以及文件类型/目录/访问控制是否安全)、远程请求(wp_remote_get/wp_remote_post,目的 URL 是否可控以及是否做 allowlist)。
可观测 PoC(必做:框架机制可观测验证框架)
至少给出以下两类之一并写清观察点:
- CSRF:缺失 nonce 校验的 action,构造缺失或错误 nonce 请求,观察响应与状态变更。
- AUTH:缺失 capability 校验的 action,使用低权限用户请求敏感 action,观察是否成功。
PoC 输出要求:必须包含 action 标识、真实请求入口(通常 admin-ajax.php 或相应表单提交路径);必须说明你要观察的结果(HTTP 状态码与业务侧效果)。
输出完整性检查(强制)
输出需包含 nonce/capability/AJAX/XSS/SQL/REDIR/UPLOAD/SSRF 的检查结果;每条风险都有映射类型码 + 位置证据 + 可观测验证框架 + 修复建议。其他平台与版本等细节资料暂未提供。