CVE-2025-14757WordPress的Cost Calculator Builder插件(免费版及PRO版)在3.6.9及之前版本中存在严重的未认证支付状态绕过漏洞。该漏洞允许未经身份验证的攻击者将任意订单的支付状态标记为"已完成",而无需进行实际支付。漏洞的根本原因在于插件将complete_payment AJAX动作通过wp_ajax_nopriv注册,使得未认证用户可以访问该端点。更严重的是,complete()函数仅验证nonce值而未检查用户权限或订单所有权。由于nonce通过前端window.ccb_nonces对象暴露给所有页面访客,攻击者可以轻松获取有效的nonce并构造恶意请求。这一漏洞严重影响使用该插件进行在线支付和订单管理的WordPress网站,可能导致财务损失和订单数据混乱。
漏洞存在于Cost Calculator Builder插件的AJAX处理逻辑中。插件通过wp_ajax_nopriv_Complete_payment动作注册了complete_payment端点,使得未登录用户也能访问。关键问题在于CCBOrderController.php中的complete()函数仅执行nonce验证,未进行用户身份认证和订单所有权检查。攻击流程如下:首先访问网站首页或任何包含计算器的页面,从页面源码中提取window.ccb_nonces对象中的nonce值;然后构造包含order_id参数的POST请求到/wp-admin/admin-ajax.php端点;最后服务器端仅验证nonce有效性后即将指定订单状态更新为completed。由于WordPress的nonce机制是为防止CSRF攻击设计而非身份认证,攻击者利用公开的nonce即可劫持任意订单。修复方案需在complete()函数中添加用户权限检查和订单所有权验证逻辑。