CVE-2025-69075
Executive Summary
CVE-2025-69075 is a critical PHP Local File Inclusion (LFI) vulnerability discovered in the Yolox WordPress theme developed by AncoraThemes. The vulnerability resides in the theme's 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, including configuration files, source code, and potentially credentials. The vulnerability affects all versions of Yolox up to and including 1.0.15. No official patch has been released at the time of analysis, and no public proof-of-concept (PoC) or exploit code is available. The EPSS score is 0.0%, indicating low exploitation activity in the wild, but the risk remains high due to the potential impact.
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
CVSS Breakdown & Threat Level
- CVSS Score: 8.1 (High)
- Vector: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N
- 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 required.
- 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) – No file modification possible.
- Availability Impact: None (A:N) – No denial of service.
Threat Level: High. The vulnerability is easy to exploit and can lead to significant data leakage.
Deep Dive & Mechanics
The vulnerability is a classic PHP Local File Inclusion (LFI) caused by insufficient sanitization of user-supplied input used in PHP's include() or require() functions. In the Yolox theme, a parameter (likely page, template, or similar) is passed to a file inclusion function without proper validation. An attacker can manipulate this parameter to include arbitrary files from the server's filesystem, such as /etc/passwd, configuration files, or PHP source code.
Root Cause: The theme likely uses a construct like:
include($_GET['template'] . '.php');
or
require_once($page . '.php');
where $page is taken directly from user input (e.g., $_GET['page']). By using path traversal sequences (e.g., ../../etc/passwd%00), an attacker can escape the intended directory and include arbitrary files. The null byte injection (%00) may be used to truncate the appended .php extension in older PHP versions, but modern PHP versions require alternative techniques like using php://filter wrappers.
Attack Scenario:
- An attacker identifies a vulnerable parameter in the Yolox theme (e.g.,
?page=...). - The attacker sends a crafted request:
http://target.com/?page=../../../../etc/passwd%00. - The server includes the
/etc/passwdfile, displaying its contents in the response. - The attacker can then read sensitive files like
wp-config.phpto obtain database credentials.
Vulnerable vs. Patched Code
Vulnerable Code (Example):
// In Yolox theme's page.php or similar
$page = $_GET['page'];
include($page . '.php');
Patched Code (Hypothetical):
// Secure version
$allowed_pages = array('home', 'about', 'contact');
$page = $_GET['page'];
if (in_array($page, $allowed_pages)) {
include($page . '.php');
} else {
// Default or error
include('home.php');
}
Or using realpath() to restrict to a specific directory:
$base_dir = '/var/www/html/wp-content/themes/yolox/pages/';
$page = $_GET['page'];
$path = realpath($base_dir . $page . '.php');
if ($path !== false && strpos($path, $base_dir) === 0) {
include($path);
} else {
// Error handling
}
Exploitation & Lab Setup
Red Team (Offensive)
Lab Setup:
- Install WordPress with Yolox theme version 1.0.15.
- Ensure the server runs PHP 5.x or 7.x (older versions are more vulnerable to null byte injection).
- Use a tool like Burp Suite or curl.
Exploitation Steps:
- Identify the vulnerable parameter. Common parameters in themes include
page,template,section,view. - Test with a simple path traversal:
curl "http://target.com/?page=../../../etc/passwd" - If the response shows the contents of
/etc/passwd, the vulnerability is confirmed. - For PHP source code disclosure, use the
php://filterwrapper:
Then decode the base64 output.curl "http://target.com/?page=php://filter/convert.base64-encode/resource=wp-config" - To read
wp-config.phpdirectly (if.phpextension is not appended):curl "http://target.com/?page=../../../wp-config.php"
Note: No public exploit code is available, but the technique is standard LFI.
Blue Team (Defensive)
Detection:
- Monitor web server logs for path traversal patterns (e.g.,
../,..\\,%2e%2e%2f). - Look for requests with
php://filterorphp://inputin parameters. - Alert on requests to the Yolox theme directory with suspicious parameters.
Mitigation:
- Apply input validation and whitelisting for all file inclusion parameters.
- Use
realpath()to restrict file paths to a specific directory. - Disable
allow_url_includeinphp.inito prevent remote file inclusion. - Keep the Yolox theme updated; if no patch is available, consider replacing the theme.
Indicators of Compromise (IOCs)
- URL Patterns:
?page=../or?page=..%2f?page=php://filter/?page=../../../../etc/passwd
- Log Entries:
GET /?page=../../../etc/passwd HTTP/1.1GET /?page=php://filter/convert.base64-encode/resource=wp-config HTTP/1.1
- File Access:
- Unauthorized access to
/etc/passwd,wp-config.php, or other sensitive files.
- Unauthorized access to
- Network Traffic:
- Outbound connections from the web server to attacker-controlled hosts (if RFI is possible).
Detection Engineering
YARA Rule
rule Detect_Yolox_LFI_Attempt {
meta:
description = "Detects attempts to exploit CVE-2025-69075 in Yolox theme"
author = "Valters IT"
date = "2025-04-10"
reference = "CVE-2025-69075"
strings:
$path_traversal = /page=([\.]{2}[\/\\])+/
$php_filter = /page=php:\/\/filter/
$etc_passwd = /page=.*etc\/passwd/
condition:
any of them
}
Sigma Rule
title: Yolox LFI Exploitation Attempt
id: 8a9b7c6d-5e4f-3a2b-1c0d-9e8f7a6b5c4d
status: experimental
description: Detects path traversal and PHP filter usage in Yolox theme parameters
author: Valters IT
logsource:
category: webserver
product: apache
detection:
selection:
cs-method: 'GET'
cs-uri-query|contains:
- 'page=../'
- 'page=..%2f'
- 'page=php://filter'
condition: selection
falsepositives:
- Legitimate use of similar patterns (rare)
level: high
Suricata Rule
alert http any any -> $HOME_NET any (
msg:"CVE-2025-69075 Yolox LFI Attempt";
flow:to_server,established;
content:"page="; http_uri;
pcre:"/page=(\.\.\/|\.\.%2f|php:\/\/filter)/i";
classtype:attempted-recon;
sid:1000001;
rev:1;
)
Remediation & Mitigation
Immediate Actions:
- Disable the Yolox theme and switch to a secure alternative until a patch is available.
- Implement a Web Application Firewall (WAF) rule to block path traversal and PHP filter patterns.
- Review server logs for any signs of exploitation.
Long-term Fixes:
- Patch the theme: If you have development resources, apply input validation and whitelisting as shown in the patched code example.
- Monitor for updates: Check AncoraThemes' website or WordPress repository for a security update.
- Harden PHP configuration: Set
allow_url_include = Offandopen_basedirto restrict file access.
Workaround:
- Use
.htaccessto block suspicious parameters:RewriteEngine On RewriteCond %{QUERY_STRING} (page=\.\.|page=php://) [NC] RewriteRule ^ - [F,L]
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.