CVE-2025-60049
Executive Summary
CVE-2025-60049 is a critical PHP Local File Inclusion (LFI) vulnerability affecting the Axiomthemes Soleil WordPress theme, version 1.17 and earlier. The 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. This can lead to sensitive information disclosure, such as reading /etc/passwd, database credentials, or WordPress configuration files. 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 the Soleil 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 affects a WordPress theme distributed via the Axiomthemes marketplace and potentially bundled with other products. Since it is a PHP application component, there is no NPM, PyPI, Go, or Ruby package involved. However, the risk extends to any site using the theme, and the lack of a patch means site administrators must manually mitigate the risk.
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 and can expose sensitive server data.
Deep Dive & Mechanics
The vulnerability exists in the Soleil theme's PHP code, likely in a template or plugin file that uses include() or require() with user-supplied input without proper sanitization. The CWE-98 (PHP Remote File Inclusion) description indicates the flaw is in the filename control for include/require statements. However, the actual impact is Local File Inclusion (LFI), meaning the attacker can only include files already on the server, not remote ones.
Attack Flow:
- An attacker identifies a parameter (e.g.,
page,template,file) in the theme's URL that is passed to aninclude()function. - The attacker crafts a request with path traversal sequences (e.g.,
../../../../etc/passwd) to include arbitrary files. - The PHP engine processes the include, reading the file content and potentially executing PHP code if the file contains PHP.
Example vulnerable code pattern:
$template = $_GET['template'];
include("templates/" . $template . ".php");
An attacker could supply template=../../../../etc/passwd%00 to null-terminate the string and read /etc/passwd.
Vulnerable vs. Patched Code
Since no patch is available, we can only hypothesize the vulnerable code and a potential fix.
Vulnerable Code (hypothetical):
<?php
// In a theme file like header.php or page.php
$page = $_GET['page'];
include($page . '.php');
?>
Patched Code (hypothetical):
<?php
$allowed_pages = array('home', 'about', 'contact');
$page = $_GET['page'];
if (in_array($page, $allowed_pages)) {
include($page . '.php');
} else {
// Default page
include('home.php');
}
?>
The patch uses a whitelist approach to restrict included files to a predefined set.
Exploitation & Lab Setup
Red Team (Offensive)
Lab Setup:
- Install WordPress with the Soleil theme (version 1.17) on a local server (e.g., XAMPP, Docker).
- Ensure the vulnerable parameter is present (e.g.,
?page=in the URL).
Exploitation Steps:
- Identify the vulnerable parameter by fuzzing the theme's URLs.
- Use path traversal to read sensitive files:
curl "http://target/wp-content/themes/soleil/vulnerable-file.php?page=../../../../etc/passwd" - If PHP wrappers are available, use
php://filterto read source code:curl "http://target/wp-content/themes/soleil/vulnerable-file.php?page=php://filter/convert.base64-encode/resource=../../../../etc/passwd"
No public exploit code is available for this CVE.
Blue Team (Defensive)
Detection:
- Monitor web server logs for path traversal patterns (e.g.,
../,%2e%2e%2f). - Look for requests to theme files with suspicious parameters.
- Use WAF rules to block directory traversal attempts.
Mitigation:
- Disable the Soleil theme until a patch is released.
- Implement a Web Application Firewall (WAF) with rules to block LFI attempts.
- Apply the principle of least privilege to the web server user.
Indicators of Compromise (IOCs)
- URL Patterns:
?page=../../../../etc/passwd,?template=php://filter/... - Log Entries: Requests containing
../,%2e%2e, orphp://in parameters. - File Access: Unauthorized reads of
/etc/passwd,/etc/shadow,wp-config.php, or other sensitive files. - Network Traffic: Outbound connections from the server if the attacker attempts to include remote files (though this is LFI, not RFI).
Detection Engineering
YARA Rule
rule CVE_2025_60049_LFI_Detection {
meta:
description = "Detects path traversal attempts targeting Soleil theme LFI"
author = "Valters IT"
date = "2025-04-10"
reference = "CVE-2025-60049"
strings:
$path_traversal = /(\.\.\/|\.\.\\|%2e%2e%2f|%2e%2e%5c)/ nocase
$php_wrapper = /php:\/\// nocase
$soleil_param = /(page|template|file)=/ nocase
condition:
any of ($path_traversal) and any of ($php_wrapper) and any of ($soleil_param)
}
Sigma Rule
title: CVE-2025-60049 Soleil Theme LFI Attempt
id: 12345678-1234-1234-1234-123456789abc
status: experimental
description: Detects path traversal in Soleil theme parameters
author: Valters IT
date: 2025/04/10
logsource:
category: webserver
product: apache
detection:
selection:
c-uri|contains:
- '..'
- '%2e%2e'
- 'php://'
c-uri|contains|all:
- '/wp-content/themes/soleil/'
condition: selection
falsepositives:
- Legitimate use of similar patterns in other contexts
level: high
Suricata Rule
alert http any any -> any any (msg:"CVE-2025-60049 Soleil Theme LFI Attempt"; flow:to_server,established; content:"/wp-content/themes/soleil/"; http_uri; content:".."; http_uri; distance:0; content:"php://"; http_uri; distance:0; classtype:attempted-recon; sid:1000001; rev:1;)
Remediation & Mitigation
Immediate Actions:
- Disable the Soleil theme and switch to a default WordPress theme (e.g., Twenty Twenty-Four) until a patch is released.
- Implement a Web Application Firewall (WAF) with rules to block directory traversal and PHP wrapper usage.
- Restrict file permissions on the web server to limit the impact of LFI (e.g., ensure
wp-config.phpis not readable by the web user).
Long-term Fix:
- Monitor the Axiomthemes website for a patched version of the Soleil theme.
- Apply the patch as soon as it becomes available.
- Conduct a security audit of all custom themes and plugins.
Valters IT – Securing your digital assets 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.