CVE-2025-39494
Executive Summary
CVE-2025-39494 is a critical PHP Local File Inclusion (LFI) vulnerability affecting the Wilmër WordPress theme developed by Qodeinteractive (Mikado-Themes). The vulnerability stems from improper control of filenames used in PHP include/require statements, allowing an unauthenticated attacker to include arbitrary local files from the server. This can lead to sensitive information disclosure, including configuration files, source code, and potentially credentials. The CVSS score of 8.1 (High) reflects the ease of exploitation and high confidentiality impact. No public exploit code or patch details are currently available, making proactive detection and mitigation essential.
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 resides in a WordPress theme distributed via the WordPress ecosystem. Users who have installed the Wilmër theme from the official WordPress repository or via direct purchase from Qodeinteractive are affected. The theme is not a standard package manager (NPM, PyPI, etc.) but is part of the WordPress plugin/theme supply chain. Organizations should verify their theme version and apply any available updates from the vendor.
CVSS Breakdown & Threat Level
- Attack Vector (AV): Network (N) – Exploitable remotely.
- Attack Complexity (AC): Low (L) – No special conditions required.
- Privileges Required (PR): None (N) – No authentication needed.
- User Interaction (UI): None (N) – No user action required.
- Scope (S): Unchanged (U) – Vulnerability does not affect other components.
- Confidentiality (C): High (H) – Full file read capability.
- Integrity (I): None (N) – No file modification.
- Availability (A): None (N) – No denial of service.
Threat Level: High. The vulnerability is trivial to exploit and can expose sensitive server files.
Deep Dive & Mechanics
The vulnerability exists in the Wilmër theme's PHP code, likely in a function that dynamically includes template files or other resources based on user-supplied input (e.g., via $_GET, $_POST, or $_REQUEST parameters). The improper control of the filename allows path traversal sequences (e.g., ../../) to be injected, enabling the inclusion of arbitrary files outside the intended directory.
Example vulnerable code pattern:
$template = $_GET['template'];
include("templates/" . $template . ".php");
An attacker could supply ../../../../etc/passwd as the template parameter, resulting in:
include("templates/../../../../etc/passwd.php");
PHP will attempt to include /etc/passwd.php, but due to PHP's include path resolution, it may still read /etc/passwd if the file extension is not strictly enforced or if null byte injection is possible (though deprecated in modern PHP). More commonly, the attacker can read files without the .php extension by using path traversal and null bytes (e.g., ../../../../etc/passwd%00).
Vulnerable vs. Patched Code
Vulnerable Code (hypothetical):
// vulnerable.php
$file = $_GET['file'];
include($file . '.php');
Patched Code (hypothetical):
// patched.php
$allowed_files = array('header', 'footer', 'sidebar');
$file = $_GET['file'];
if (in_array($file, $allowed_files)) {
include($file . '.php');
} else {
// error handling
}
The patched version uses a whitelist of allowed files, preventing arbitrary inclusion. The actual patch from Qodeinteractive is unknown, but likely involves input validation and sanitization.
Exploitation & Lab Setup
Red Team (Exploitation)
Lab Setup:
- Install a WordPress instance with the Wilmër theme version < 3.4.2.
- Identify the vulnerable parameter (e.g.,
template,file,page). - Use a web browser or tool like
curlto test.
Exploit Example:
curl -v "http://target/wp-content/themes/wilmer/vulnerable.php?file=../../../../etc/passwd"
If successful, the response will contain the contents of /etc/passwd.
Advanced Exploitation:
- Read WordPress configuration files to obtain database credentials:
curl "http://target/wp-content/themes/wilmer/vulnerable.php?file=../../../../wp-config" - Use PHP wrappers for further exploitation (e.g.,
php://filterfor base64 encoding):curl "http://target/wp-content/themes/wilmer/vulnerable.php?file=php://filter/convert.base64-encode/resource=../../../../wp-config"
Blue Team (Detection & Defense)
Detection:
- Monitor web server logs for path traversal patterns (e.g.,
../,%2e%2e%2f). - Look for requests to theme files with suspicious parameters.
- Use WAF rules to block path traversal attempts.
Defense:
- Immediately update the Wilmër theme to version 3.4.2 or later.
- If no patch is available, disable the theme and switch to a secure alternative.
- Implement input validation and whitelisting for all file inclusion parameters.
- Use a Web Application Firewall (WAF) with rules to block LFI attempts.
Indicators of Compromise (IOCs)
- File Paths:
/etc/passwd,/etc/shadow,/wp-config.php,/proc/self/environ - URL Patterns:
?file=,?template=,?page=followed by../sequences - Log Entries: HTTP requests containing
%2e%2e%2for../in query parameters - Network Traffic: Outbound connections from the web server to external IPs (if RFI is also possible)
- File Hashes: Modified theme files with suspicious include statements
Detection Engineering
YARA Rule
rule CVE_2025_39494_LFI_Detect {
meta:
description = "Detects LFI attempts targeting Wilmër theme"
author = "Valters IT"
date = "2025-04-10"
reference = "CVE-2025-39494"
strings:
$path_traversal = /(\.\.\/|\.\.\\){2,}/
$vuln_param = /(file|template|page)=/
$sensitive_file = /(etc\/passwd|wp-config|proc\/self)/
condition:
any of ($path_traversal) and any of ($vuln_param) and any of ($sensitive_file)
}
Sigma Rule
title: CVE-2025-39494 Wilmër LFI Attempt
id: 8a9b7c6d-5e4f-3a2b-1c0d-9e8f7a6b5c4d
status: experimental
description: Detects path traversal attempts in Wilmër theme parameters
author: Valters IT
logsource:
category: webserver
product: apache
service: access
detection:
selection:
cs-method: 'GET'
cs-uri-query|contains:
- 'file='
- 'template='
- 'page='
cs-uri-query|re: '(\.\.\/|%2e%2e%2f){2,}'
condition: selection
falsepositives:
- Legitimate use of relative paths in some configurations
level: high
Suricata Rule
alert http $HOME_NET any -> $EXTERNAL_NET any (msg:"CVE-2025-39494 Wilmër LFI Attempt"; flow:to_server,established; content:"GET"; http_method; content:"file="; http_uri; pcre:"/(\.\.\/|%2e%2e%2f){2,}/"; classtype:attempted-recon; sid:1000001; rev:1;)
Remediation & Mitigation
- Immediate Action: Update the Wilmër theme to version 3.4.2 or later if a patch is released. If no patch is available, disable the theme and use an alternative.
- Configuration Hardening: Disable PHP
allow_url_includeandallow_url_fopenif not required. - Input Validation: Implement strict whitelisting for all file inclusion parameters.
- WAF Rules: Deploy WAF rules to block path traversal patterns.
- Monitoring: Enable logging and alerting for suspicious file inclusion attempts.
- Backup: Ensure regular backups of WordPress files and database.
Valters IT – Securing your digital assets with precision and expertise.
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.