CVE-2025-32628
Executive Summary
CVE-2025-32628 is a reflected Cross-Site Scripting (XSS) vulnerability in the WordPress plugin Crowdfunding for WooCommerce by WP Wham, affecting versions up to and including 3.1.12. 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. The CVSS score is 7.1 (High), and no official patch or exploit code is publicly available at this time. The EPSS score is 0.0%, indicating low exploitation likelihood currently, but the risk remains for unpatched sites.
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 means users must rely on manual mitigation.
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) – injected script can affect other resources
- Confidentiality Impact: Low (C:L)
- Integrity Impact: Low (I:L)
- Availability Impact: Low (A:L)
Threat Level: High. Although user interaction is required, the vulnerability is easy to exploit and can lead to significant impact in a WordPress ecosystem context.
Deep Dive & Mechanics
The vulnerability exists in the crowdfunding-for-woocommerce plugin, specifically in how it handles input parameters passed via HTTP GET or POST requests. The plugin fails to sanitize or escape user input before reflecting it in the HTML output. An attacker can craft a malicious URL containing JavaScript payloads in a query parameter (e.g., ?campaign_id=<script>alert(1)</script>). When a victim visits this URL, the injected script executes in the context of the victim's browser session on the WordPress site.
The vulnerable code likely resides in a shortcode or template file that directly echoes $_GET or $_POST values without using WordPress's built-in escaping functions like esc_html() or esc_attr(). Since the plugin is no longer maintained, no patch is available.
Vulnerable vs. Patched Code
Vulnerable Code (hypothetical example):
<?php
// In a template file or shortcode handler
$campaign_id = $_GET['campaign_id'];
echo "<div>Campaign ID: $campaign_id</div>";
?>
Patched Code (recommended):
<?php
$campaign_id = isset($_GET['campaign_id']) ? esc_html($_GET['campaign_id']) : '';
echo "<div>Campaign ID: " . $campaign_id . "</div>";
?>
The patched version uses esc_html() to neutralize any HTML/JavaScript before output.
Exploitation & Lab Setup
Red Team (Attack Simulation)
- Setup: Install WordPress with Crowdfunding for WooCommerce plugin version 3.1.12 on a local or isolated server.
- Craft Payload: Create a URL with a malicious script in a vulnerable parameter. Example:
http://target-site.com/?campaign_id=<script>alert('XSS')</script> - Deliver: Send the link to a victim via email, social engineering, or other means.
- Execute: When the victim clicks the link, the script executes in their browser.
Note: No public exploit code is available; this is a manual demonstration.
Blue Team (Defense & Detection)
- Web Application Firewall (WAF): Deploy rules to block reflected XSS patterns in query strings.
- Input Validation: Implement server-side validation for all user inputs.
- Content Security Policy (CSP): Add a strict CSP header to mitigate script execution.
- Monitor Logs: Look for unusual query parameters containing
<script>oronerrorpatterns.
Indicators of Compromise (IOCs)
- URL Patterns: Requests containing
?campaign_id=<script>or similar XSS payloads in query parameters. - HTTP Referer: Suspicious referers from phishing emails or unknown sources.
- Log Entries: Access logs showing
campaign_idparameter with HTML/JavaScript content. - Browser Behavior: Unexpected pop-ups, redirects, or form submissions on the WordPress site.
Detection Engineering
YARA Rule
rule CVE_2025_32628_Reflected_XSS {
meta:
description = "Detects reflected XSS attempts targeting Crowdfunding for WooCommerce plugin"
author = "Valters IT"
date = "2025-04-10"
reference = "CVE-2025-32628"
strings:
$payload1 = /campaign_id=.*<script/i
$payload2 = /campaign_id=.*onerror/i
$payload3 = /campaign_id=.*alert\(/i
condition:
any of them
}
Sigma Rule
title: Reflected XSS Attempt - Crowdfunding for WooCommerce
id: 12345678-1234-1234-1234-123456789abc
status: experimental
description: Detects reflected XSS attempts targeting CVE-2025-32628
author: Valters IT
logsource:
category: webserver
product: apache
detection:
selection:
c-uri|contains:
- 'campaign_id=<script'
- 'campaign_id=onerror'
- 'campaign_id=alert('
condition: selection
falsepositives:
- Legitimate use of campaign_id with similar patterns (rare)
level: high
Suricata Rule
alert http any any -> any any (msg:"CVE-2025-32628 Reflected XSS Attempt"; flow:to_server; content:"campaign_id"; http_uri; pcre:"/campaign_id=.*<script/i"; sid:1000001; rev:1;)
Remediation & Mitigation
- Immediate Action: Disable or remove the Crowdfunding for WooCommerce plugin until a patch is available.
- Virtual Patching: Use a WAF to block requests containing XSS patterns in the
campaign_idparameter. - Code Fix: If you have access to the plugin source, apply the patched code example above.
- User Education: Train users not to click suspicious links.
- Monitor: Continuously monitor logs for exploitation attempts.
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.