🔴 【深度分析】严重安全漏洞:CVE-2026-15011

CVSS 评分: 严重(9.8)🔴  状态: Deferred  发布时间: 2026-07-23


🔍 技术细节速览

字段
CVE ID CVE-2026-15011
CVSS 评分 9.8 🔴
严重程度 严重
CVSS 向量 CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
CWE 分类 CWE-94
发布时间 2026-07-23
最后更新 2026-07-23
状态 Deferred
数据来源 security@wordfence.com

CVSS 评分:9.8(严重)
CVSS 向量:CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
漏洞状态:Deferred(厂商尚未发布补丁)


漏洞概述

CVE-2026-15011 是存在于 WordPress 插件 Customer Support Ticket System & Helpdesk(客服工单系统与帮助台)中的一处严重代码注入漏洞。攻击者可在未认证的情况下,利用插件公开暴露的 path 参数,向服务器注入任意无参数的 PHP 函数调用,从而实现远程代码执行(RCE)的效果。该漏洞影响所有版本(含)6.0.5 及之前版本。

由于攻击复杂度低(无需特殊条件)、无需权限、无需用户交互,且可完全接管服务器(高机密性/完整性/可用性影响),CVSS 评分高达 9.8,属于最高危级别。


受影响组件与版本

组件 版本范围
WordPress 插件 “Customer Support Ticket System & Helpdesk” ≤ 6.0.5(包括 6.0.5)

注意:插件可能在其他名称下分发,建议检查插件的内部版本标识。受影响版本尚未有官方补丁,当前漏洞状态为 Deferred,即厂商尚未发布修复。


漏洞原理分析

技术成因

根据 NVD 描述,该漏洞源于插件在处理 path 参数时,动态调用了用户可控的函数名,且未充分验证输入的有效性。具体表现为:

  1. 动态函数调用:插件在代码中可能使用了类似 call_user_func($_GET['path'])$path() 的写法,将用户通过 HTTP 请求传入的 path 参数直接作为 PHP 函数名执行。
  2. 无参数限制:攻击者只能调用无参数的 PHP 函数(即函数签名不含任何必选参数)。这在一定程度上限制了攻击面,但仍有大量危险的无参数函数可用。
  3. 非ce 公开获取:插件的短代码 [emd_form] 在渲染时会通过 wp_localize_script 向前端页面输出一个 JavaScript 对象,其中包含一个可用于验证请求的 nonce。该 nonce 是公开可见的(任何未认证用户均可获取),因此攻击者无需任何身份验证即可构造包含合法 nonce 的请求,触发漏洞。

攻击向量

  • 攻击入口:HTTP GET 或 POST 请求中的 path 参数(具体参数名可能因插件实现略有不同,但 NVD 明确标识为 path)。
  • 利用条件:只需要目标站点安装了受影响版本的插件,并存在任意一个包含 [emd_form] 短代码的公开页面(例如“联系我们”页面)。攻击者访问该页面即可从 HTML 源码中提取 nonce,然后构造恶意请求。
  • 攻击示例:攻击者可设置 path=phpinfo 来调用 phpinfo() 函数(无参数),从而泄露服务器配置信息;或设置 path=system 并配合其他参数绕过(尽管 system() 需要参数,但某些 PHP 版本允许动态调用并忽略参数错误?需谨慎,但描述明确为“无参数PHP函数”)。更常见的利用是调用 getenv('FLAG') 之类,但严格来说 getenv 也需要参数。实际可利用的包括 phpversion(), memory_get_usage(), getmypid(), uniqid(), time(), rand() 等。更危险的是,结合 PHP 的自动加载机制或已定义的全局函数,可能存在 evalassert(两者均需要参数,但 assert() 在 PHP 7 中可接受字符串参数?不适用)。攻击者还可调用 mail 函数(需参数,但某些版本可无参数测试)等。但最关键的利用方式是调用可写文件或执行任意命令的函数——例如 file_put_contents 需要参数;不过 PHP 中存在 call_user_func 自身也是函数,但 call_user_func 需要参数。理想情况下,攻击者无法直接执行任意代码,但可通过调用 create_function(PHP 7.2 之前,已废弃)或 forward_static_call_array 等技巧绕过?但描述限定了“无参数”,因此实际攻击范围可能被限制为信息泄露和拒绝服务(如调用 exitdie 导致站点崩溃)。

注意:尽管 NVD 指出攻击者可“invoke arbitrary parameterless PHP functions”,但并未确认是否可借此实现完整的 RCE。根据经验,此类漏洞通常可以通过调用 phpinfo() 泄露敏感信息,或通过 error_reporting(0) 隐藏错误,或通过 class_exists/function_exists 探测环境。部分场景下可结合其他 PHP 特性(如自动加载回调)提升危害性。

为什么是非永续(non-persistent)但严重?

该漏洞不需要持久化存储 payload,攻击者直接在请求中传递恶意函数名即可触发,属于反射型代码注入。由于 nonce 公开且无需认证,攻击者可反复利用,且一旦攻击成功,可导致服务器完全沦陷(如果找到了可执行任意代码的组合)。


影响评估

维度 评估
攻击复杂度 (AC:L) 低。攻击者只需发送构造好的 HTTP 请求,无需特殊工具或条件。
所需权限 (PR:N) 无。未认证用户即可利用。
用户交互 (UI:N) 无。不依赖管理员或其他用户操作。
攻击向量 (AV:N) 网络。可通过远程 Internet 访问。
机密性影响 (C:H) 高。攻击者可调用 phpinfo()get_loaded_extensions() 等泄露服务器敏感配置;还可通过调用 file_get_contents(但需要参数)——无参数场景下可能无法直接读文件,但可结合 compactextract 等方式?无法确定。
完整性影响 (I:H) 高。攻击者可通过 init_set 修改 PHP 配置,或通过 register_shutdown_function 注册恶意回调(需参数),或调用 define 定义常量等。
可用性影响 (A:H) 高。可调用 exit/die 直接中断请求,或通过 sleep 制造延迟造成拒绝服务。

实际威胁等级

尽管限制了函数无参数,但攻击者依然可以:

  • 调用 phpinfo() 获取数据库密码、文件路径、插件版本等敏感信息。
  • 调用 eval 并非无参数,但可利用 assert 在 PHP 7 以下版本中执行代码(assert 接受字符串参数,但无参数版本会报错)。
  • 调用 system 本身需要参数,但可通过 putenv 设置环境变量,再结合其他方式执行命令?复杂场景下可能可行。
  • 调用 get_defined_functions()get_defined_vars() 来枚举可用函数和变量,辅助后续攻击。

综合来看,该漏洞应被视为严重安全风险,应立即采取措施。


修复建议

官方补丁(尚未发布)

目前插件厂商未提供补丁,且 NVD 状态为 Deferred。建议持续关注插件更新页面。

临时缓解措施

  1. 禁用插件:如果业务不需要该功能,立即停用并删除该插件。
  2. 限制访问端点:通过 Web 应用防火墙(WAF)或 .htaccess 规则阻止包含 path 参数的可疑请求,例如:
    RewriteCond %{QUERY_STRING} (^|&)path=[a-zA-Z_][a-zA-Z0-9_]* [NC]
    RewriteRule .* - [F,L]
    
    但注意:上述规则可能误伤正常功能,需谨慎测试。
  3. 移除公开短代码:搜索所有页面、文章和模板,移除对 [emd_form] 的引用,避免 nonce 公开暴露。
  4. 修改 nonce 生成逻辑(需开发者能力):临时修改插件代码,使 nonce 仅对已登录用户有效,或使用服务器端验证替代公开 nonce。

长期方案

对于 WordPress 站点,建议:

  • 定期更新插件,密切关注安全公告。
  • 启用自动更新(对于非关键业务插件)。
  • 部署 Web 应用防火墙(如 Wordfence、Sucuri)拦截此类注入尝试。

参考资料

⚠️ 免责声明:本文基于 NVD 公开数据进行分析,不包含对实际利用代码的披露。建议所有受影响用户立即采取缓解措施,保护系统安全。