CVE-2025-69083
Executive Summary
CVE-2025-69083 is a critical PHP Local File Inclusion (LFI) vulnerability discovered in the Frappé WordPress theme by Elated-Themes, affecting versions up to and including 1.8. The vulnerability stems from improper control of a filename used in an include/require statement, allowing an unauthenticated attacker to include arbitrary local files from the server. This can lead to sensitive information disclosure, such as reading /etc/passwd, database configuration files, or source code. The CVSS score of 8.1 (High) reflects the ease of exploitation and high confidentiality impact. No public proof-of-concept or patch is currently available, making this a high-priority unpatched threat for WordPress sites using this theme.
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 WordPress theme distributed via the official WordPress theme repository and third-party marketplaces. Since the theme is a commercial product, the supply chain risk is elevated: users must rely on the vendor (Elated-Themes) for a patch. The lack of a public patch or advisory increases the risk of supply chain compromise through unpatched installations.
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 vulnerability is trivial to exploit, requires no authentication, and can expose sensitive server data. The EPSS score of 0.0% suggests low current exploitation, but this may change as details spread.
Deep Dive & Mechanics
The vulnerability exists in the Frappé theme's PHP code, likely in a file that handles template loading or shortcode rendering. The theme uses a user-controllable parameter (e.g., page, template, or include) in a PHP include() or require() statement without proper sanitization or validation. An attacker can supply a path traversal sequence (e.g., ../../../../etc/passwd) to include arbitrary files from the server.
Root Cause: The theme fails to validate the filename against an allowlist of expected templates or paths. PHP's include() function will execute any file as PHP code if it contains PHP tags, but even non-PHP files (like /etc/passwd) will be read and output as plain text if the file is not parsed as PHP.
Attack Vector: HTTP GET/POST request to a vulnerable endpoint, such as:
GET /wp-content/themes/frappe/template.php?file=../../../../etc/passwd HTTP/1.1
Vulnerable vs. Patched Code
Vulnerable Code (Frappé <= 1.8):
<?php
// vulnerable-template.php
$template = $_GET['template'];
include( get_template_directory() . '/templates/' . $template . '.php' );
?>
Patched Code (Hypothetical):
<?php
// patched-template.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 {
// Fallback to default
include( get_template_directory() . '/templates/default.php' );
}
?>
The patched version uses an allowlist to restrict included files to known safe templates, preventing path traversal.
Exploitation & Lab Setup
Red Team (Offensive)
Lab Setup:
- Install WordPress with the Frappé theme (version 1.8) on a local server (e.g., XAMPP, Docker).
- Identify the vulnerable parameter by reviewing the theme's PHP files (look for
include(),require(),file_get_contents()with user input). - Use a tool like Burp Suite or curl to test LFI.
Exploitation Steps:
- Basic LFI:
curl "http://target/wp-content/themes/frappe/template.php?file=../../../../etc/passwd" - PHP Wrapper for Code Execution (if allow_url_include is on):
curl "http://target/wp-content/themes/frappe/template.php?file=php://filter/convert.base64-encode/resource=../../../../etc/passwd" - Log Poisoning (if writable logs):
- Inject PHP code into User-Agent header.
- Include the log file:
curl "http://target/wp-content/themes/frappe/template.php?file=../../../../var/log/apache2/access.log"
Blue Team (Defensive)
Detection Steps:
- Monitor web server logs for path traversal patterns (e.g.,
../,%2e%2e%2f). - Deploy a WAF rule to block requests containing
../in query parameters. - Use file integrity monitoring to detect unauthorized file reads.
Hunting Queries:
- Search for
includeorrequirestatements in the theme's PHP files that use$_GET,$_POST, or$_REQUESTwithout validation. - Look for unusual HTTP requests to theme template files with
fileortemplateparameters.
Indicators of Compromise (IOCs)
Network IOCs:
- HTTP requests containing
../or%2e%2e%2fin query parameters. - Requests to
/wp-content/themes/frappe/with suspiciousfileortemplateparameters. - Outbound connections from the web server to attacker-controlled hosts (if RFI is possible).
- HTTP requests containing
File System IOCs:
- Unexpected inclusion of system files (e.g.,
/etc/passwd,/etc/shadow) in web server logs. - Presence of PHP wrappers in request logs (e.g.,
php://filter).
- Unexpected inclusion of system files (e.g.,
Log IOCs:
- Apache/Nginx access logs showing
GET /wp-content/themes/frappe/template.php?file=../../../../etc/passwd.
- Apache/Nginx access logs showing
Detection Engineering
YARA Rule
rule CVE_2025_69083_LFI_Frappe {
meta:
description = "Detects LFI attempts against Frappé theme CVE-2025-69083"
author = "Valters IT"
date = "2025-04-10"
severity = "high"
strings:
$path_traversal = /(\.\.\/|\.\.\\){2,}/
$frappe_theme = /wp-content\/themes\/frappe/i
$param_file = /[?&](file|template|include)=/
condition:
$frappe_theme and $param_file and $path_traversal
}
Sigma Rule
title: CVE-2025-69083 Frappé Theme LFI Detection
id: 7a8b9c0d-1e2f-3a4b-5c6d-7e8f9a0b1c2d
status: experimental
description: Detects path traversal attempts targeting the Frappé WordPress theme
author: Valters IT
date: 2025-04-10
logsource:
category: webserver
product: apache
service: access
detection:
selection:
cs-uri-query|contains:
- '../'
- '..%2f'
- '%2e%2e%2f'
cs-uri-stem|contains: '/wp-content/themes/frappe/'
condition: selection
falsepositives:
- Legitimate use of relative paths in theme development
level: high
Suricata Rule
alert http any any -> any any (msg:"CVE-2025-69083 Frappé Theme LFI Attempt"; flow:to_server,established; content:"/wp-content/themes/frappe/"; http_uri; content:"../"; http_uri; distance:0; within:100; classtype:attempted-recon; sid:1000001; rev:1;)
Remediation & Mitigation
Immediate Actions:
- Disable the Frappé theme until a patch is released. Switch to a default WordPress theme (e.g., Twenty Twenty-Four).
- Implement a Web Application Firewall (WAF) rule to block path traversal patterns in query parameters.
- Restrict file permissions on sensitive system files (e.g.,
/etc/passwdshould not be readable by the web server user).
Long-Term Fix:
- Contact Elated-Themes for an official patch.
- If you have development access, apply the allowlist fix shown in the "Vulnerable vs. Patched Code" section.
- Regularly update all WordPress themes and plugins.
Workaround:
- Add the following to
.htaccessto block LFI attempts:RewriteEngine On RewriteCond %{QUERY_STRING} (\.\./|%2e%2e%2f) [NC] RewriteRule ^wp-content/themes/frappe/ - [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.