CVE-2025-12961CVE-2025-12961是WordPress Download Panel插件中的一个高危安全漏洞,该漏洞影响1.3.3及之前所有版本。漏洞的根本原因在于插件的AJAX处理函数`dlpn_save_settings()`缺少必要的权限验证机制。具体而言,插件注册了`wp_ajax_save_settings` AJAX动作来处理设置保存请求,但该动作处理器未对当前用户的权限进行任何检查。在WordPress的权限体系中,`wp_ajax_*`动作默认仅对已登录用户开放,然而并未验证用户是否具有管理插件设置的相应权限。攻击者仅需拥有一个有效的WordPress账户(订阅者角色即可满足最低要求),即可通过发送特制的AJAX请求来修改插件的所有配置选项。这些可修改的设置包括但不限于显示文本内容、下载链接地址、按钮颜色样式及其他视觉自定义参数。由于该漏洞允许低权限用户修改关键设置,攻击者可能利用此漏洞进行钓鱼攻击(修改下载链接指向恶意资源)、网站篡改(修改显示文本内容)或进一步的社会工程攻击。此漏洞的利用无需任何用户交互,且可通过网络远程执行,对WordPress站点的安全性和完整性构成严重威胁。
该漏洞属于WordPress插件常见的权限控制缺陷类型。在WordPress插件开发中,AJAX请求处理需要特别注意权限验证。正确的实现应该在处理敏感操作前调用`current_user_can()`或`wp_verify_nonce()`等函数来验证用户权限。然而,Download Panel插件的`dlpn_save_settings()`函数直接处理来自AJAX的设置保存请求,完全省略了权限检查步骤。漏洞利用过程如下:攻击者构造一个POST请求到`/wp-admin/admin-ajax.php`端点,请求中包含`action=wp_ajax_save_settings`参数和精心构造的`settings`数据。WordPress的AJAX处理器会识别这是一个`wp_ajax_*`动作,因此会验证请求来自已登录用户,但不会检查用户角色。由于插件未实现额外的权限验证,任何已认证用户(包括订阅者角色的最低权限账户)都能成功提交请求。服务器端接收到请求后,`dlpn_save_settings()`函数直接将用户提交的参数保存到WordPress选项表中,导致插件设置被恶意修改。攻击者可通过修改`download_url`参数将合法下载链接替换为恶意资源链接,或修改界面文本进行钓鱼活动。