Overview
CVE-2025-9212 is a critical vulnerability that affects the WP Dispatcher plugin for WordPress. It enables authenticated attackers with Subscriber-level access and above to upload arbitrary files on the affected site’s server, potentially leading to remote code execution. This vulnerability is serious as it can lead to potential system compromise or data leakage, thereby threatening the security and integrity of websites running on the vulnerable versions of the WP Dispatcher plugin.
Vulnerability Summary
CVE ID: CVE-2025-9212
Severity: High (7.5/10)
Attack Vector: Network
Privileges Required: Low (Subscriber-level access)
User Interaction: None
Impact: Potential system compromise and data leakage
Affected Products
Product | Affected Versions
WP Dispatcher plugin for WordPress | Up to and including 1.2.0
How the Exploit Works
The WP Dispatcher plugin for WordPress is missing file type validation in the wp_dispatcher_process_upload() function. This allows authenticated attackers with Subscriber-level access and above to upload arbitrary files, including malicious scripts, to the server. While the directory does have an .htaccess file limiting the ability to execute remote code, successful exploitation of this vulnerability could still potentially lead to remote code execution, system compromise, and data leakage.
Conceptual Example Code
Below is a conceptual example of how an attacker might exploit this vulnerability:
POST /wp-dispatcher/process-upload HTTP/1.1
Host: vulnerable-site.com
Content-Type: multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW
----WebKitFormBoundary7MA4YWxkTrZu0gW
Content-Disposition: form-data; name="file"; filename="malicious_script.php"
Content-Type: application/x-php
----WebKitFormBoundary7MA4YWxkTrZu0gW--
In this example, the attacker uses a POST request to upload a malicious PHP script, which can execute shell commands passed via the ‘cmd’ GET parameter. After the file is uploaded, the attacker can trigger the script by sending a request to the uploaded file’s URL and passing the desired shell command via the ‘cmd’ GET parameter.