CVE-2026-9725CVE-2026-9725是WordPress平台上一款名为"Printcart Web to Print Product Designer for WooCommerce"的插件中存在的严重安全漏洞。该漏洞的CVSS评分为9.1,属于严重级别,允许未经身份验证的远程攻击者在受影响的WordPress网站上执行任意文件删除操作。
该漏洞源于插件的store_design_data()函数中存在不充分的路径验证机制。具体而言,该函数从用户提供的'nbd_item_key' POST参数构造文件系统路径,但仅使用了sanitize_text_field()函数进行清理,而该函数并不会剥离路径遍历序列(如../)。这意味着攻击者可以通过精心构造的路径遍历payload,绕过安全检查,将恶意路径传递给Nbdesigner_IO::delete_folder()函数和PHP的rename()函数,从而删除服务器上的任意文件。
更为严重的是,保护nbd_save_customer_design AJAX操作的nonce(一次性令牌)可以通过nbd_check_use_logged_in端点被未认证用户自由获取,这大大降低了攻击门槛。攻击者无需任何凭据即可利用此漏洞。任意文件删除的最终后果可能包括远程代码执行(RCE),例如通过删除关键的安全配置文件或利用其他机制实现完全的系统控制。该漏洞影响该插件2.5.2及以下的所有版本,已在2.5.3版本中修复。
该漏洞的核心问题在于store_design_data()函数对用户输入的处理方式存在严重缺陷。
**路径验证缺陷**:store_design_data()函数接收用户通过POST请求提交的'nbd_item_key'参数,并将其作为文件系统路径的一部分。在处理该参数时,仅调用了WordPress的sanitize_text_field()函数进行清理。然而,sanitize_text_field()函数的主要功能是清理不需要的HTML标签和多余空白字符,并不会移除路径遍历序列(如"../"或"..\\")。攻击者可以提交包含路径遍历序列的恶意值,如"../../../../wp-config.php",从而引用服务器上任意位置的文件。
**危险函数调用**:经过不充分清理的路径随后被直接传递给Nbdesigner_IO::delete_folder()函数和PHP内置的rename()函数。delete_folder()函数会递归删除指定路径下的所有文件和目录,而rename()函数则可用于文件移动操作。通过精心构造路径,攻击者可以删除WordPress安装目录之外的关键文件,如wp-config.php(WordPress配置文件)、.htaccess(Web服务器配置)或其他系统文件。
**Nonce泄露问题**:保护nbd_save_customer_design AJAX端点的CSRF nonce可以通过另一个端点nbd_check_use_logged_in获取。该端点未实施适当的访问控制,允许未认证用户请求并获取有效的nonce值,从而完全绕过了CSRF保护机制。
**利用条件**:该漏洞的利用条件极为宽松——攻击者仅需能够通过网络访问目标WordPress站点的AJAX端点,无需任何身份验证或用户交互。攻击成功后,删除wp-config.php等关键文件可导致网站完全瘫痪,而进一步的攻击(如结合其他漏洞)可能实现远程代码执行。