CVE-2025-39384
Executive Summary
CVE-2025-39384 is a critical PHP Local File Inclusion (LFI) vulnerability affecting the WordPress plugin "Product Lister for eBay" by Cedcommerce, versions up to and including 2.0.9. The vulnerability stems from improper control of a filename used in a PHP include/require statement, allowing an unauthenticated attacker to include arbitrary local files from the server. This can lead to sensitive information disclosure, such as reading the wp-config.php file containing database credentials. The CVSS score is 7.5 (High), and no public exploit or patch is currently available. As a WordPress plugin vulnerability, it affects sites running the vulnerable plugin and does not involve Apache or Nginx directly.
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 plugin is distributed via the WordPress Plugin Directory and potentially through third-party marketplaces. Users should verify the integrity of their plugin installation and ensure they are not using modified or malicious versions. No official patch has been released, making this a supply chain risk for any site using the plugin.
CVSS Breakdown & Threat Level
- CVSS Vector: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N
- Base Score: 7.5 (High)
- Attack Vector: Network (AV:N) – The vulnerability can be exploited remotely.
- Attack Complexity: Low (AC:L) – No special conditions are required.
- Privileges Required: None (PR:N) – No authentication needed.
- User Interaction: None (UI:N) – No user action is required.
- Scope: Unchanged (S:U) – The vulnerable component and the impacted component are the same.
- Confidentiality Impact: High (C:H) – Sensitive files can be read.
- Integrity Impact: None (I:N) – No file modification is possible.
- Availability Impact: None (A:N) – No denial of service.
Threat Level: High. The ease of exploitation and potential for credential theft make this a priority for remediation.
Deep Dive & Mechanics
The vulnerability is a PHP Local File Inclusion (LFI) in the product-lister-ebay plugin. The plugin likely uses a dynamic include statement where a user-supplied parameter (e.g., page, file, or template) is passed directly to include() or require() without proper sanitization or validation. An attacker can manipulate this parameter to include arbitrary files from the server's filesystem.
Example vulnerable code pattern:
$page = $_GET['page'];
include( $page . '.php' );
By sending a request like ?page=../../../../etc/passwd%00, the attacker can include the /etc/passwd file (null byte injection may be needed in older PHP versions). In modern PHP, path traversal without null bytes can still work if the extension is not appended or if the attacker uses a wrapper like php://filter.
Impact:
- Read sensitive files:
wp-config.php,/etc/passwd, application logs. - Potential for Remote Code Execution (RCE) if combined with file upload or log poisoning.
- Information disclosure leading to further attacks.
Vulnerable vs. Patched Code
Since no patch is available, we can only hypothesize the fix. The vulnerable code likely lacks input validation.
Vulnerable Code (hypothetical):
$file = $_GET['file'];
include( $file . '.php' );
Patched Code (hypothetical):
$allowed_files = array('dashboard', 'settings', 'help');
$file = $_GET['file'];
if (in_array($file, $allowed_files)) {
include( $file . '.php' );
} else {
// Handle error
}
A proper patch would use a whitelist of allowed files, validate the input against a known set, and avoid direct user input in include paths.
Exploitation & Lab Setup
Red Team (Offensive)
Lab Setup:
- Install WordPress with the vulnerable plugin (version <= 2.0.9).
- Ensure the plugin is activated.
Exploitation Steps:
- Identify the vulnerable parameter (e.g.,
page,file,template). Use a web fuzzer or review plugin source code. - Test for LFI with a simple path traversal:
http://target/wp-admin/admin.php?page=../../../../../../etc/passwd - If the extension
.phpis appended, try null byte injection (for PHP < 5.3.4):http://target/wp-admin/admin.php?page=../../../../../../etc/passwd%00 - Use PHP wrappers to read source code:
http://target/wp-admin/admin.php?page=php://filter/convert.base64-encode/resource=wp-config - For RCE, attempt log poisoning by injecting PHP code into logs (e.g., User-Agent header) and then including the log file.
Example curl command:
curl -s "http://target/wp-admin/admin.php?page=../../../../../../etc/passwd" | head -20
Blue Team (Defensive)
Detection:
- Monitor web server logs for suspicious
pageorfileparameters containing../,%00, orphp://. - Look for requests to
admin.phpwith unusual parameter values. - Use WAF rules to block path traversal patterns.
Hunting:
- Search for requests with base64-encoded strings in parameters.
- Check for inclusion of sensitive files like
wp-config.phpor/etc/passwd.
Mitigation:
- Disable the plugin until a patch is available.
- Implement a Web Application Firewall (WAF) with rules to block LFI attempts.
- Restrict file inclusion to a whitelist.
Indicators of Compromise (IOCs)
- File Paths:
/etc/passwd,/etc/shadow,wp-config.php,/proc/self/environ - URL Patterns:
?page=../../../../,?file=php://filter/,?template=....//....// - Log Entries: Requests to
/wp-admin/admin.phpwithpageparameter containing path traversal sequences. - Network: Outbound connections from the server to attacker-controlled hosts (if RCE achieved).
Detection Engineering
YARA Rule
rule Detect_LFI_ProductListereBay {
meta:
description = "Detects LFI attempts targeting Product Lister for eBay plugin"
author = "Valters IT"
date = "2025-04-10"
reference = "CVE-2025-39384"
strings:
$path_traversal = /page=\.\.(\/|\\)/
$php_wrapper = /page=php:\/\//
$null_byte = /%00/
condition:
any of them
}
Sigma Rule
title: LFI Attempt Against Product Lister for eBay
id: 8a9b3c4d-5e6f-7a8b-9c0d-1e2f3a4b5c6d
status: experimental
description: Detects path traversal or PHP wrapper usage in page parameter
author: Valters IT
logsource:
category: webserver
product: apache
detection:
selection:
cs-uri-query|contains:
- 'page=../'
- 'page=..\\'
- 'page=php://'
- '%00'
condition: selection
falsepositives:
- Legitimate use of similar patterns (rare)
level: high
Suricata Rule
alert http any any -> any any (msg:"CVE-2025-39384 LFI Attempt - Product Lister for eBay"; flow:to_server,established; content:"page="; nocase; content:"../"; distance:0; within:100; sid:1000001; rev:1;)
Remediation & Mitigation
Immediate Actions:
- Disable the plugin until a patch is released.
- Implement a WAF with rules to block path traversal and PHP wrapper usage.
- Monitor logs for exploitation attempts.
Long-term Fix:
- Apply the official patch from Cedcommerce when available.
- Replace the plugin with an alternative if no patch is forthcoming.
- Conduct a security audit of all WordPress plugins.
Workaround:
- If disabling is not possible, restrict access to
wp-admin/admin.phpvia.htaccessor IP whitelisting.
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.