CVE-2025-54701
Executive Summary
CVE-2025-54701 is a critical vulnerability affecting the WordPress ecosystem, specifically the Thememove Unicamp theme (versions <= 2.6.3). The vulnerability is a PHP Local File Inclusion (LFI) stemming from improper control of filenames used in include/require statements. An unauthenticated attacker can exploit this to read arbitrary files from the server, potentially exposing sensitive configuration files, credentials, or source code. The CVSS score of 8.1 reflects the high confidentiality impact and network-based attack vector with low complexity. No public proof-of-concept (PoC) or patch is currently available, making this a high-priority zero-day for WordPress site administrators.
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 commercial WordPress theme distributed via ThemeMove. Since it is not an open-source package (NPM, PyPI, Go, Ruby), supply chain risks are limited to direct theme installations. However, users should verify the integrity of their theme files and monitor for official patches from ThemeMove.
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 access.
- Integrity (I): None (N) – No file modification.
- Availability (A): None (N) – No denial of service.
Threat Level: Critical – Unauthenticated remote file disclosure with no patch available.
Deep Dive & Mechanics
The vulnerability exists in the unicamp theme's PHP code, likely in a function that dynamically includes files based on user-supplied input (e.g., via $_GET, $_POST, or $_COOKIE). The improper control of filenames allows path traversal sequences (e.g., ../../etc/passwd) to be passed to PHP's include() or require() functions. Since the theme is a WordPress component, the attack surface is typically through template parameters, shortcodes, or AJAX handlers that accept file paths.
Root Cause: The theme fails to sanitize or validate the filename parameter before passing it to a PHP include statement. This allows an attacker to specify arbitrary file paths, leading to local file inclusion.
Attack Vector: An unauthenticated HTTP request to a vulnerable endpoint (e.g., /?template=../../etc/passwd or a custom AJAX action).
Vulnerable vs. Patched Code
Since no patch is available, the vulnerable code pattern is hypothesized based on common LFI vulnerabilities in WordPress themes:
Vulnerable Code (hypothetical):
<?php
// In a theme file (e.g., unicamp/functions.php)
$template = $_GET['template'];
include( get_template_directory() . '/templates/' . $template . '.php' );
?>
Patched Code (hypothetical):
<?php
$allowed_templates = array('default', 'full-width', 'sidebar');
$template = $_GET['template'];
if (in_array($template, $allowed_templates)) {
include( get_template_directory() . '/templates/' . $template . '.php' );
} else {
// Default behavior or error
}
?>
The patched version uses a whitelist approach to restrict included files to a predefined set, preventing arbitrary file inclusion.
Exploitation & Lab Setup
Red Team (Offensive)
Prerequisites:
- A WordPress site running Unicamp theme version <= 2.6.3.
- Knowledge of a vulnerable endpoint (e.g., a template parameter or AJAX action).
Exploitation Steps:
- Identify the vulnerable parameter (e.g.,
template,file,include). - Craft a request with path traversal to read sensitive files:
GET /?template=../../../../etc/passwd HTTP/1.1 Host: target.com - If successful, the response will contain the contents of
/etc/passwd. - For PHP file inclusion (to achieve RCE), attempt to include a PHP file with malicious code (e.g., via log poisoning or upload).
Example Request (using curl):
curl -v "http://target.com/?template=../../../../etc/passwd"
Note: No public exploit code is available; this is a theoretical exploitation based on the vulnerability type.
Blue Team (Defensive)
Detection:
- Monitor web server logs for suspicious
../sequences in GET/POST parameters. - Look for requests to theme files with unexpected parameters.
- Use WAF rules to block path traversal patterns.
Hunting:
- Search for
include(orrequire(in theme files that use unsanitized user input. - Check for files like
unicamp/functions.phporunicamp/template-loader.phpfor vulnerable code.
Lab Setup:
- Install a local WordPress instance with Unicamp theme version 2.6.3.
- Use a debugger or logging to trace file inclusion calls.
- Simulate attacks with safe parameters (e.g., reading a non-sensitive file like
/etc/hostname).
Indicators of Compromise (IOCs)
Network IOCs:
- HTTP requests containing
../or..\\in parameters (e.g.,template=../../etc/passwd). - Requests to
wp-content/themes/unicamp/with unusual query strings. - Outbound connections from the web server to attacker-controlled hosts (if RCE is achieved).
- HTTP requests containing
File System IOCs:
- Unexpected files in
/tmp/or web-accessible directories. - Modified
.htaccessorwp-config.phpfiles. - Presence of webshells (e.g.,
shell.php,cmd.php).
- Unexpected files in
Log IOCs:
- Web server logs showing
404errors for non-existent template files. - PHP error logs with
include()failures or path traversal warnings.
- Web server logs showing
Detection Engineering
YARA Rule
rule CVE_2025_54701_LFI_Unicamp {
meta:
description = "Detects PHP LFI attempts targeting Unicamp theme"
author = "Valters IT"
date = "2025-04-10"
reference = "CVE-2025-54701"
strings:
$path_traversal = /\.\.\/|\.\.\\/
$unicamp_param = /template|file|include/i
$php_include = /include\s*\(|require\s*\(/
condition:
$path_traversal and $unicamp_param and $php_include
}
Sigma Rule
title: CVE-2025-54701 Unicamp LFI Attempt
id: 8a9b7c6d-5e4f-3a2b-1c0d-9e8f7a6b5c4d
status: experimental
description: Detects path traversal attempts targeting Unicamp theme
author: Valters IT
logsource:
category: webserver
product: apache
service: access
detection:
selection:
cs-method: 'GET'
cs-uri-query|contains:
- '../'
- '..\\'
cs-uri-query|contains|all:
- 'template='
- 'file='
- 'include='
condition: selection
falsepositives:
- Legitimate use of relative paths in theme (unlikely)
level: high
Suricata Rule
alert http any any -> $HOME_NET any (
msg:"CVE-2025-54701 Unicamp LFI Attempt";
flow:to_server,established;
content:"../"; http_uri;
content:"template="; http_uri;
classtype:attempted-recon;
sid:1000001;
rev:1;
)
Remediation & Mitigation
Immediate Actions:
- Disable the Unicamp theme until a patch is available. Switch to a default WordPress theme (e.g., Twenty Twenty-Four).
- Apply a Web Application Firewall (WAF) rule to block path traversal patterns (e.g.,
../,..\\). - Restrict file permissions on sensitive files (e.g.,
wp-config.phpshould be 400 or 440).
Long-term Fix:
- Monitor ThemeMove's official channels for a patched version.
- Once patched, update the theme to the latest version.
- Conduct a security audit of all custom themes and plugins for similar LFI vulnerabilities.
Workaround:
- If the theme cannot be disabled, modify the vulnerable PHP file to add input validation (e.g., whitelist allowed template names). This requires developer intervention.
Valters IT – Securing digital ecosystems 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.