CVE-2025-47511
Executive Summary
CVE-2025-47511 is a Path Traversal vulnerability (CWE-22) affecting the Welcart e-Commerce plugin (usc-e-shop) for WordPress, up to and including version 2.11.13. This flaw allows an unauthenticated attacker to read arbitrary files outside the web root directory, potentially exposing sensitive configuration files, database credentials, or source code. The vulnerability stems from improper sanitization of user-supplied path inputs, enabling directory traversal sequences (e.g., ../). As of this report, no official patch has been released, and no public proof-of-concept (PoC) or exploit code is available. The EPSS score is 0.0%, indicating low exploitation activity in the wild, but the risk remains significant for unpatched instances.
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 plugin ecosystem. The Welcart e-Commerce plugin is distributed via the WordPress plugin repository and third-party marketplaces. Users should verify the integrity of their plugin files and monitor for updates from the vendor. No known supply chain compromise has been reported.
CVSS Breakdown & Threat Level
- CVSS Vector: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:L/A:L
- Base Score: 6.8 (Medium)
- Attack Vector: Network (AV:N) – Exploitable remotely.
- Attack Complexity: Low (AC:L) – No special conditions required.
- Privileges Required: None (PR:N) – No authentication needed.
- User Interaction: None (UI:N) – No user action required.
- Scope: Unchanged (S:U) – Vulnerability does not affect other components.
- Confidentiality Impact: Low (C:L) – Limited file read access.
- Integrity Impact: Low (I:L) – Potential to modify files if write access is also present.
- Availability Impact: Low (A:L) – Could lead to denial of service via resource exhaustion.
Threat Level: Medium. While the CVSS score is moderate, the lack of authentication requirements and the potential for sensitive data exposure elevate the risk for unpatched WordPress sites.
Deep Dive & Mechanics
The vulnerability resides in the file handling logic of the Welcart e-Commerce plugin. The plugin fails to properly validate and sanitize user-supplied input used in file path construction. Specifically, when processing requests to access or download files (e.g., product images, invoices, or logs), the plugin concatenates user input with a base directory without checking for path traversal sequences like ../ or absolute paths.
Attack Vector: An attacker can craft a malicious HTTP request to the vulnerable endpoint, injecting directory traversal sequences to navigate outside the intended directory. For example:
GET /wp-content/plugins/usc-e-shop/download.php?file=../../../wp-config.php HTTP/1.1
Host: target-site.com
If the plugin does not strip ../ or block absolute paths, the server will return the contents of wp-config.php, which contains database credentials and authentication keys.
Root Cause:
The vulnerable code likely uses a function like file_get_contents() or readfile() with unsanitized input. A typical vulnerable snippet might be:
$file = $_GET['file'];
$path = '/var/www/html/uploads/' . $file;
readfile($path);
Without validation, an attacker can supply ../../../wp-config.php to read sensitive files.
Vulnerable vs. Patched Code
Vulnerable Code (<= 2.11.13):
<?php
// Vulnerable: No input validation
$file = $_GET['file'];
$base_dir = WP_CONTENT_DIR . '/uploads/welcart/';
$full_path = $base_dir . $file;
if (file_exists($full_path)) {
header('Content-Type: application/octet-stream');
readfile($full_path);
}
?>
Patched Code (Hypothetical Fix):
<?php
// Patched: Validate and sanitize path
$file = basename($_GET['file']); // Strip directory components
$base_dir = WP_CONTENT_DIR . '/uploads/welcart/';
$full_path = realpath($base_dir . $file);
if ($full_path !== false && strpos($full_path, $base_dir) === 0) {
header('Content-Type: application/octet-stream');
readfile($full_path);
} else {
http_response_code(403);
echo 'Access denied.';
}
?>
The patched version uses basename() to remove directory traversal sequences and realpath() to resolve the absolute path, then checks that the resolved path starts with the allowed base directory.
Exploitation & Lab Setup
Red Team (Offensive)
Lab Environment:
- WordPress 6.x with Welcart e-Commerce 2.11.13 installed.
- Local server (e.g., XAMPP, Docker) or a vulnerable VM.
Exploitation Steps:
- Identify the vulnerable endpoint (e.g.,
/wp-content/plugins/usc-e-shop/download.php). - Craft a request to read
wp-config.php:curl -v "http://target/wp-content/plugins/usc-e-shop/download.php?file=../../../wp-config.php" - If successful, the response will contain the contents of
wp-config.php. - Attempt to read other sensitive files:
/etc/passwd(Linux)/windows/win.ini(Windows)/wp-content/debug.log
Automated Scanning:
Use a tool like ffuf or Burp Suite Intruder to fuzz for traversal patterns:
ffuf -u "http://target/wp-content/plugins/usc-e-shop/download.php?file=FUZZ" -w /path/to/traversal-payloads.txt
Blue Team (Defensive)
Detection & Prevention:
- Monitor web server logs for requests containing
../or%2e%2e%2f(URL-encoded traversal). - Implement a Web Application Firewall (WAF) rule to block path traversal patterns.
- Restrict file permissions on the server to prevent read access to sensitive files.
- Use a security plugin (e.g., Wordfence) to detect and block malicious requests.
Honeypot:
Deploy a fake wp-config.php file that logs access attempts and alerts administrators.
Indicators of Compromise (IOCs)
Network IOCs:
- HTTP requests with
../or%2e%2e%2fin thefileparameter. - Requests to
/wp-content/plugins/usc-e-shop/download.phpwith suspicious query strings. - Outbound connections from the server to unknown IPs (if data exfiltration occurs).
- HTTP requests with
File System IOCs:
- Unauthorized access to
/etc/passwd,wp-config.php, or other sensitive files. - Modified or newly created files in the web root (e.g., webshells).
- Unauthorized access to
Log IOCs:
- Web server logs showing
200 OKresponses to traversal requests. - Error logs with
file_get_contents()failures for non-existent paths.
- Web server logs showing
Detection Engineering
YARA Rule
rule CVE_2025_47511_Welcart_Path_Traversal {
meta:
description = "Detects path traversal attempts against Welcart e-Commerce plugin"
author = "Valters IT"
date = "2025-04-10"
reference = "CVE-2025-47511"
strings:
$traversal1 = "../"
$traversal2 = "..\\"
$traversal3 = "%2e%2e%2f"
$traversal4 = "%2e%2e\\"
$endpoint = "usc-e-shop/download.php"
condition:
any of ($traversal*) and $endpoint
}
Sigma Rule
title: CVE-2025-47511 Welcart Path Traversal Attempt
id: 8a9b3c4d-5e6f-7a8b-9c0d-1e2f3a4b5c6d
status: experimental
description: Detects HTTP requests with path traversal patterns targeting Welcart e-Commerce plugin
author: Valters IT
date: 2025-04-10
logsource:
category: webserver
product: apache
detection:
selection:
cs-uri-query|contains:
- '../'
- '..\\'
- '%2e%2e%2f'
- '%2e%2e\\'
cs-uri-stem|contains: 'usc-e-shop/download.php'
condition: selection
falsepositives:
- Legitimate use of relative paths in some plugins
level: high
Suricata Rule
alert http any any -> any any (msg:"CVE-2025-47511 Welcart Path Traversal Attempt"; flow:to_server,established; content:"/usc-e-shop/download.php"; http_uri; content:"../"; http_uri; nocase; sid:1000001; rev:1;)
Remediation & Mitigation
Immediate Actions:
- Disable the plugin if not essential, or restrict access to the vulnerable endpoint via
.htaccess:<Files "download.php"> Require all denied </Files> - Apply a virtual patch using a WAF (e.g., ModSecurity rule):
SecRule REQUEST_URI "@contains /usc-e-shop/download.php" "id:1000002,phase:1,deny,status:403,msg:'Welcart Path Traversal Blocked'" - Monitor logs for exploitation attempts and block offending IPs.
Long-Term Fix:
- Update to a patched version once released by the vendor.
- Implement input validation and sanitization in custom code.
- Use a security plugin like Wordfence or Sucuri to harden WordPress.
Workaround:
- Replace the vulnerable
download.phpfile with a patched version (see Vulnerable vs. Patched Code section).
Valters IT
Senior 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.