🔴 严重 | CVE-2026-15300 — The GEO my WP plugin for WordPress was vulnerable ...
🔴 《严重安全漏洞:CVE-2026-15300》
CVSS 评分: 严重(9.1) 状态: Received 发布时间: 2026-07-10
漏洞简介
该漏洞存在于 WordPress 的 GEO my WP 插件中,属于 SQL 注入(SQL Injection)漏洞,对应 CWE-89 分类。攻击者可以通过构造特制的 HTTP 请求,利用 distance、lat 和 lng 三个参数向数据库查询中注入恶意 SQL 代码。
漏洞的根源在于插件在处理这些参数时,从 $_SERVER['QUERY_STRING'] 中读取原始查询字符串,并通过 parse_str() 解析。由于 wp_magic_quotes 机制不覆盖 $_SERVER 变量,因此这些参数值未经过 WordPress 内置的转义保护。随后,这些值被直接传递给 esc_sql() 函数进行转义,但 esc_sql() 仅转义字符串定界符(如单引号),而这三个参数在 SQL 查询中被插入到未加引号的数值位置(例如 HAVING 和 SELECT 子句中的距离计算、BETWEEN 边界框预过滤条件)。因此,像 1 OR SLEEP(3) 这样的 payload 可以绕过转义,直接作为数值参与 SQL 运算,导致注入成功。
受影响的函数为 gmw_locations_query(),位于文件 plugins/posts-locator/includes/class-gmw-wp-query.php 中(版本 4.5.4 及之前)。
该漏洞已在 4.5.5 版本中修复。修复方式包括:
- 在上游增加
is_numeric()检查,当任一坐标值非数值时,将WHERE子句短路为AND 1 = 0,从而阻止非数值输入进入查询。 - 将原有的三个
esc_sql()调用替换为(float)强制类型转换,确保参数始终为浮点数。
影响范围
- 受影响版本:GEO my WP 插件 4.5.4 及之前所有版本
- 修复版本:4.5.5
- 攻击向量:网络远程攻击(AV:N)
- 攻击复杂度:低(AC:L),无需特殊条件
- 所需权限:无(PR:N),未认证用户即可利用
- 用户交互:无(UI:N)
风险分析
CVSS 评分:CVSS:3.1 基础分数为 8.2(高危),向量为
AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:H/A:H影响范围:
- 机密性(C):无影响(N),该漏洞不直接导致数据泄露
- 完整性(I):高(H),攻击者可以修改数据库中的任意数据,包括插入、更新或删除记录
- 可用性(A):高(H),攻击者可以通过注入
SLEEP()等延时函数导致数据库响应缓慢,或通过DROP、DELETE等操作直接破坏数据,造成服务不可用
攻击后果:
- 未认证的远程攻击者可以构造恶意请求,向 WordPress 数据库执行任意 SQL 语句。
- 可能导致数据库内容被篡改(如修改用户权限、插入恶意链接)、数据被删除,或通过延时注入造成拒绝服务(DoS)。
- 由于 WordPress 数据库通常包含用户信息、配置数据等敏感内容,该漏洞可能被用于进一步提权或获取管理员权限。
修复建议:立即将 GEO my WP 插件升级至 4.5.5 或更高版本。
🔍 技术细节
| 字段 | 值 |
|---|---|
| CVE ID | CVE-2026-15300 |
| CVSS 评分 | 9.1 🔴 |
| 严重程度 | 严重 |
| CVSS 向量 | CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:H/A:H |
| CWE 分类 | CWE-89 |
| 发布时间 | 2026-07-10 |
| 最后更新 | 2026-07-10 |
| 状态 | Received |
| 数据来源 | security@wordfence.com |