CVE-2025-63056
Executive Summary
CVE-2025-63056 is a Missing Authorization vulnerability in the Contact Form by BestWebSoft WordPress plugin (version <= 4.3.6). This flaw allows an unauthenticated attacker to exploit incorrectly configured access control security levels, potentially leading to unauthorized actions within the plugin's functionality. The vulnerability is classified as Medium Severity (CVSS 4.3) and currently has no known public exploit or patch. As a WordPress plugin vulnerability, it affects the WordPress ecosystem directly and is not related to Apache or Nginx server software.
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 distributed via the official WordPress plugin repository. The supply chain risk is elevated due to the lack of a patch and the plugin's widespread use. Organizations should inventory all instances of this plugin and consider temporary deactivation until a fix is released.
CVSS Breakdown & Threat Level
- CVSS Vector: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:L/A:N
- Base Score: 4.3 (Medium)
- Attack Vector: Network (AV:N) – Exploitable remotely.
- Attack Complexity: Low (AC:L) – No special conditions required.
- Privileges Required: None (PR:N) – No authentication needed.
- User Interaction: None (UI:N) – No user action required.
- Scope: Unchanged (S:U) – Impact confined to the vulnerable component.
- Confidentiality Impact: None (C:N) – No data exposure.
- Integrity Impact: Low (I:L) – Limited modification of data or functionality.
- Availability Impact: None (A:N) – No denial of service.
Threat Level: Medium. While the CVSS score is moderate, the lack of a patch and the potential for chaining with other vulnerabilities increases the risk.
Deep Dive & Mechanics
The vulnerability stems from a Missing Authorization check (CWE-862) in the contact-form-plugin by BestWebSoft. The plugin fails to properly verify user permissions before executing certain actions, such as modifying plugin settings, exporting form data, or accessing administrative functions. An unauthenticated attacker can send crafted HTTP requests to the WordPress instance to trigger these actions.
Root Cause: The plugin does not implement capability checks (e.g., current_user_can()) on AJAX handlers or REST API endpoints. This allows any user, including unauthenticated visitors, to invoke privileged functions.
Attack Vector:
- Attacker identifies a WordPress site running the vulnerable plugin.
- Attacker sends a specially crafted HTTP request (e.g., POST to
/wp-admin/admin-ajax.phpwith actionbws_contact_form_export). - The plugin processes the request without verifying the user's role, leading to unauthorized data export or configuration changes.
Impact: An attacker could:
- Export submitted contact form data (potentially containing PII).
- Modify plugin settings (e.g., email recipients, spam filters).
- Disable the plugin or alter its behavior.
Vulnerable vs. Patched Code
Since no patch is available, the vulnerable code is the current state. A hypothetical fix would involve adding authorization checks.
Vulnerable Code (Example):
add_action('wp_ajax_nopriv_bws_contact_form_export', 'bws_contact_form_export_handler');
function bws_contact_form_export_handler() {
// No capability check
$data = get_option('bws_contact_form_entries');
echo json_encode($data);
wp_die();
}
Patched Code (Hypothetical):
add_action('wp_ajax_bws_contact_form_export', 'bws_contact_form_export_handler');
function bws_contact_form_export_handler() {
if (!current_user_can('manage_options')) {
wp_die('Unauthorized', 403);
}
$data = get_option('bws_contact_form_entries');
echo json_encode($data);
wp_die();
}
Exploitation & Lab Setup
Red Team (Exploitation)
Prerequisites:
- WordPress instance with Contact Form by BestWebSoft <= 4.3.6.
- Network access to the WordPress admin AJAX endpoint.
Exploitation Steps:
- Identify the vulnerable endpoint:
/wp-admin/admin-ajax.php - Craft a POST request with the appropriate action parameter (e.g.,
action=bws_contact_form_export). - Send the request using
curl:
curl -X POST http://target.com/wp-admin/admin-ajax.php \
-d "action=bws_contact_form_export"
Expected Output: JSON data containing contact form submissions.
Note: No public exploit code is available; this is a conceptual demonstration.
Blue Team (Detection & Defense)
Detection:
- Monitor for unusual POST requests to
/wp-admin/admin-ajax.phpwith action parameters related tobws_contact_form. - Alert on requests from unauthenticated users to AJAX actions that should require admin privileges.
Defense:
- Temporarily deactivate the plugin until a patch is released.
- Implement a Web Application Firewall (WAF) rule to block requests to
admin-ajax.phpwith suspicious action parameters. - Restrict access to
/wp-admin/directory via.htaccessor IP whitelisting.
Indicators of Compromise (IOCs)
- Network IOCs:
- POST requests to
/wp-admin/admin-ajax.phpwithaction=bws_contact_form_exportor similar. - Unusual outbound data transfers containing JSON with contact form fields.
- POST requests to
- File IOCs:
- Modified plugin files in
/wp-content/plugins/contact-form-plugin/. - Unexpected log entries in
/wp-content/debug.log.
- Modified plugin files in
- System IOCs:
- Unauthorized changes to plugin settings in the WordPress database (
wp_optionstable).
- Unauthorized changes to plugin settings in the WordPress database (
Detection Engineering
YARA Rule
rule CVE_2025_63056_ContactForm_Unauth {
meta:
description = "Detects exploitation attempts for CVE-2025-63056 in Contact Form by BestWebSoft"
author = "Valters IT"
date = "2025-04-10"
reference = "CVE-2025-63056"
strings:
$ajax_action = "bws_contact_form_export"
$ajax_url = "/wp-admin/admin-ajax.php"
condition:
$ajax_action and $ajax_url
}
Sigma Rule
title: CVE-2025-63056 - Unauthorized Access to Contact Form Plugin
id: 7a8b9c0d-1e2f-3a4b-5c6d-7e8f9a0b1c2d
status: experimental
description: Detects unauthenticated POST requests to admin-ajax.php with BestWebSoft contact form actions
author: Valters IT
date: 2025/04/10
logsource:
category: webserver
product: apache
service: accesslog
detection:
selection:
cs-method: 'POST'
cs-uri-stem: '/wp-admin/admin-ajax.php'
cs-uri-query|contains: 'action=bws_contact_form'
condition: selection
falsepositives:
- Legitimate admin actions (rare)
level: high
Suricata Rule
alert http any any -> any any (
msg:"CVE-2025-63056 - Unauthorized Contact Form Plugin Access";
flow:to_server,established;
content:"POST";
http_method;
content:"/wp-admin/admin-ajax.php";
http_uri;
content:"action=bws_contact_form";
http_client_body;
classtype:attempted-admin;
sid:1000001;
rev:1;
)
Remediation & Mitigation
Immediate Actions:
- Deactivate the plugin until a patch is released by BestWebSoft.
- Monitor logs for exploitation attempts using the provided detection rules.
- Restrict access to
/wp-admin/directory via.htaccess:<FilesMatch "admin-ajax.php"> Order Deny,Allow Deny from all Allow from 127.0.0.1 </FilesMatch>
Long-term Fix:
- Apply the official patch once released by BestWebSoft.
- Implement a Web Application Firewall (WAF) with rules to block unauthenticated AJAX requests.
- Regularly update all WordPress plugins and themes.
Workaround:
- Use a security plugin (e.g., Wordfence) to add virtual patching for this vulnerability.
Valters IT
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.