针对 CVE-2026-93300 的 Python 概念验证:EventON - Subscriber WordPress 插件中通过 email 参数实现的未认证 SQL 注入(Wordfence,CVSS 7.5 高危)。
| CVE | CVE-2026-93300 |
| 插件 | EventON - Subscriber (eventon-subscriber) |
| 受影响版本 | 所有 ≤ 1.4.5 的版本 |
| 修复版本 | 无已发布版本(截至 2026-10) |
| 攻击向量 | POST /wp-admin/admin-ajax.php,action=evosub_new_subscriber,参数 email |
| 认证 | 无(未认证) |
| CWE | CWE-89 SQL 注入 |
订阅表单的 AJAX 处理程序(evosub_new_subscriber,通过 wp_ajax_nopriv_ 注册,可从 assets/evosub_script.js 中的公开前端表单访问)在构建现有 SQL 查询时使用了用户提供的 email 值,而未使用 $wpdb->prepare() / 进行适当的转义。该值未经转义即进入查询,因此攻击者可以跳出字符串字面量并追加/修改查询,从而从数据库中读取任意数据。
evosub_script.js 中的客户端电子邮件正则表达式是浏览器中唯一的格式检查;它不提供任何服务器端保护。
# 1. Detect only (fingerprint handler, find working injection oracle)
python3 cve_2026_93300.py --url https://target.example --mode check
# 2. Dump wp_users (login / email / password hash)
python3 cve_2026_93300.py --url https://target.example --mode users --prefix wp_
# 3. Extract any scalar query result
python3 cve_2026_93300.py --url https://target.example --mode sql \
--sql "SELECT option_value FROM wp_options WHERE option_name='admin_email'"
| 选项 | 默认值 | 描述 |
|---|---|---|
--mode | check | check / users / sql |
--action | evosub_new_subscriber | 要测试的 AJAX action |
--param | email | 注入的参数 |
--prefix | wp_ | WordPress 表前缀 |
--sql | — | 用于 --mode sql 的标量 SELECT |
--delay | 2.0 | 基于时间 oracle 的 SLEEP() 秒数 |
--timeout | 25 | HTTP 超时 |
--max-id | 15 | 要扫描的最高用户 ID |
--proxy / --insecure / --ua | — | HTTP 代理 / 跳过 TLS 验证 / 自定义 UA |
action=evosub_new_subscriber 与未注册的 action(0 / HTTP 400)进行对比,以确认处理程序存在且处于活动状态。'、"、\)→ 如果 SQL 错误被回显(WP_DEBUG),则使用基于错误的 oracle(最快,每比特一次请求);SLEEP() 的 UNION 列数暴力破解 → union-time oracle(每次探测一次求值,不会因逐行而变慢);;SELECT SLEEP(...))→ 如果驱动允许多语句,则使用stacked-time oracle;OR/AND/paren/concat SLEEP)→ template-time oracle 作为后备。1=1 → true 和 1=0 → false(重复)给出正确回答,以过滤掉慢速/不稳定目标产生的误报。LENGTH() 和 ASCII(SUBSTRING(...)) 进行二分查找(每个字符 7 次请求)。--mode check 以对 user_login@USER() 的健全性提取结束,以证明数据访问。
evo-subscriber 文章类型中创建少量 poc*@example.invalid 条目;它们可在 Events → All Subscribers 下看到,并可以移至回收站。email,则所有探测行为相同,工具会报告未发现漏洞 / 输入已验证。admin-ajax.php 损坏(基线致命错误)的目标会被报告为不健康并中止。SELECT 查询形态(INSERT/UPDATE 上下文)会被检测到,但可能没有可用的时间 oracle。--delay ≥ 1.0;极小的延迟会在高延迟链路上产生假阴性。$wpdb->prepare() / esc_sql() 处理 email(以及所有请求输入);在服务端使用 is_email() 进行验证。email 值包含 SQL 元字符('、"、\、--、;、UNION)的未认证 admin-ajax.php 请求。仅用于授权的安全测试和教育目的。未经授权访问计算机系统是违法的。您有责任遵守所有适用法律。