CVE-2025-11888CVE-2025-11888是WordPress平台ShopEngine Elementor WooCommerce Builder插件中的一个高权限授权绕过漏洞。该插件是一款功能全面的WooCommerce解决方案,为WordPress网站提供完整的电商功能支持。漏洞存在于插件的许可证管理模块,具体问题出在post_deactive()函数和post_activate()函数上。这两个函数负责处理插件许可证的激活和停用操作,但缺乏足够的权限验证机制。
在WordPress的权限体系中,许可证管理通常需要管理员级别权限才能操作,因为许可证状态直接关系到插件的合法使用和商业授权。然而,由于该插件对这两个关键函数的权限检查不足,任何具有编辑者(Editor)级别及以上权限的认证用户都可以调用这些函数来激活或停用许可证。这意味着拥有相对较低权限的内部人员(如内容编辑、产品管理员)可以执行原本只有站点管理员才能进行的许可证操作。
该漏洞的潜在危害包括:攻击者可以恶意停用有效许可证,导致网站功能异常或业务中断;或者未经授权激活许可证,绕过正常的采购流程。此外,许可证管理功能通常与远程验证服务器通信,存在信息泄露或中间人攻击的风险。虽然CVSS评分较低(2.7),但在多用户协作的WordPress网站环境中,该漏洞仍可能造成实际的安全威胁和业务影响。
该漏洞影响插件4.8.4及以下所有版本,已在4.8.5版本中得到修复。建议使用该插件的网站管理员尽快更新至最新版本,并审查具有编辑权限的用户账户,确保没有可疑活动。对于无法立即更新的场景,应考虑限制编辑者角色的功能或实施额外的访问控制措施。
漏洞根因在于ShopEngine插件的WordPress REST API端点缺乏正确的权限回调验证。在WordPress插件开发中,REST API路由可以通过register_rest_route()函数注册,并指定权限回调(permission_callback)来控制访问。然而,post_deactive()和post_activate()函数对应的API路由在注册时未正确设置权限检查,或权限检查逻辑存在缺陷。
具体来说,这些函数直接处理许可证激活/停用的HTTP POST请求,但没有验证调用者是否具有管理员权限。在WordPress中,管理许可证通常需要manage_options能力(对应管理员角色),但该插件允许任何具有edit_posts能力(编辑者角色)的用户访问这些端点。攻击者只需构造特定的HTTP请求,包含有效的认证Cookie(编辑者级别会话),即可触发许可证状态变更。
利用此漏洞的技术步骤:首先,攻击者需要拥有一个WordPress编辑者级别或更高权限的账户。登录后,通过浏览器开发者工具或HTTP抓包工具捕获正常的WordPress REST API请求结构。然后,向插件的许可证管理端点(如/wp-json/shopengine/v1/license/deactivate或activate)发送POST请求。由于插件仅检查用户是否已登录(is_user_logged_in()),而未验证manage_options能力,请求将成功执行。
服务器端接收到请求后,post_deactivate()函数会调用第三方服务验证当前许可证状态,然后将其标记为停用。post_activate()函数则调用激活接口。整个过程无需管理员干预,攻击者可以在后台静默执行。修复方案是在REST API路由注册时添加permission_callback => '__return_true',并在使用前显式检查current_user_can('manage_options'),确保只有管理员可以操作许可证。