CVE-2025-30868
Executive Summary
CVE-2025-30868 is a critical PHP Local File Inclusion (LFI) vulnerability in the WordPress plugin Team Manager by Maidul, affecting versions up to and including 2.1.23. The vulnerability stems from improper control of a filename used in a PHP include or require statement, allowing an unauthenticated attacker to include arbitrary local files from the server. This can lead to sensitive information disclosure, such as reading the wp-config.php file containing database credentials, or potentially achieving remote code execution if combined with file upload capabilities. The CVSS v3.1 base score is 7.5 (High), with the attack vector being network-based, low complexity, and requiring no privileges or user interaction. No public proof-of-concept (PoC) or exploit code has been released, and no official patch is available from the vendor. The EPSS score is 0.0%, indicating low exploitation likelihood at this time, but the risk remains significant for unpatched installations.
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. As a supply chain risk, any site using the Team Manager plugin version <= 2.1.23 is directly impacted. Since the vendor has not provided a patch, site administrators must consider removing or replacing the plugin. The lack of a patch also means that the plugin may be abandoned, increasing long-term risk. No known malicious packages or typosquatting variants have been identified.
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: 7.5 (High)
- Attack Vector (AV): Network – Exploitable remotely over the network.
- Attack Complexity (AC): Low – No special conditions required.
- Privileges Required (PR): None – No authentication needed.
- User Interaction (UI): None – No user action required.
- Scope (S): Unchanged – Exploit does not affect other components.
- Confidentiality (C): High – Full file read capability.
- Integrity (I): None – No file modification.
- Availability (A): None – No denial of service.
Threat Level: High. Although no public exploit exists, the vulnerability is trivial to exploit once the vulnerable parameter is identified. The impact on confidentiality is severe, as an attacker can read sensitive server files.
Deep Dive & Mechanics
The vulnerability lies in the improper sanitization of a filename parameter used in a PHP include() or require() statement within the Team Manager plugin. The plugin likely accepts a user-supplied parameter (e.g., page, file, or template) and passes it directly to an include function without proper validation or path traversal checks. An attacker can manipulate this parameter to include arbitrary files from the server, such as /etc/passwd or wp-config.php.
Root Cause: The plugin fails to:
- Validate the input against a whitelist of allowed files.
- Strip directory traversal sequences (e.g.,
../). - Use
realpath()or similar functions to resolve the path. - Restrict the include path to a specific directory.
Attack Flow:
- Attacker identifies a vulnerable endpoint, e.g.,
wp-admin/admin.php?page=team-manager&file=. - Attacker sends a request with a path traversal payload:
?page=team-manager&file=../../../../etc/passwd. - The plugin includes the specified file, outputting its contents in the response.
- Attacker reads sensitive data, such as database credentials from
wp-config.php.
Vulnerable vs. Patched Code
Since no patch is available, the vulnerable code is presumed to be similar to:
// Vulnerable code (conceptual)
$file = $_GET['file'];
include($file . '.php');
A patched version would implement strict validation:
// Patched code (conceptual)
$allowed_files = array('dashboard', 'settings', 'members');
$file = $_GET['file'];
if (in_array($file, $allowed_files)) {
include(plugin_dir_path(__FILE__) . 'templates/' . $file . '.php');
} else {
// Error handling
}
Exploitation & Lab Setup
Red Team
Prerequisites:
- A WordPress site with Team Manager plugin version <= 2.1.23.
- Knowledge of the vulnerable parameter (e.g.,
file).
Exploitation Steps:
- Identify the vulnerable endpoint:
http://target/wp-admin/admin.php?page=team-manager&file=. - Test for LFI with a simple payload:
file=../../../../etc/passwd. - If successful, read
wp-config.phpfor credentials:file=../../../../wp-config. - Optionally, attempt to achieve RCE via log poisoning or PHP filter chains.
Example Request (using curl):
curl -v "http://target/wp-admin/admin.php?page=team-manager&file=../../../../etc/passwd"
Expected Output: Contents of /etc/passwd or error if file does not exist.
Blue Team
Detection:
- Monitor web server logs for suspicious
fileparameters containing../or/etc/. - Use WAF rules to block path traversal patterns.
- Deploy the detection rules provided in the Detection Engineering section.
Hunting:
- Search for requests to
admin.phpwithpage=team-managerand afileparameter. - Look for unusual file paths in HTTP response bodies.
Containment:
- Immediately disable or remove the Team Manager plugin.
- If removal is not possible, apply a virtual patch via WAF to block path traversal.
Indicators of Compromise (IOCs)
- Network IOCs:
- HTTP requests to
/wp-admin/admin.phpwithpage=team-managerandfileparameter containing../or absolute paths. - Outbound connections from the web server to unknown IPs (if RCE achieved).
- HTTP requests to
- File System IOCs:
- Unexpected files in the web root (e.g., shells).
- Modified
.htaccessorwp-config.phpfiles.
- Log IOCs:
- Web server logs showing
404or200responses for non-existent files. - PHP error logs with
include()failures.
- Web server logs showing
Detection Engineering
YARA Rule
rule CVE_2025_30868_LFI_TeamManager {
meta:
description = "Detects LFI attempts targeting Team Manager plugin"
author = "Valters IT"
date = "2025-04-01"
reference = "CVE-2025-30868"
strings:
$param = "page=team-manager" nocase
$lfi1 = "../" ascii
$lfi2 = "..\\" ascii
$lfi3 = "/etc/" ascii
$lfi4 = "wp-config" ascii
condition:
$param and any of ($lfi*)
}
Sigma Rule
title: CVE-2025-30868 Team Manager LFI Attempt
id: 8a9b3c4d-5e6f-7a8b-9c0d-1e2f3a4b5c6d
status: experimental
description: Detects path traversal attempts in Team Manager plugin
author: Valters IT
date: 2025/04/01
logsource:
category: webserver
product: apache
service: access
detection:
selection:
cs-uri-query|contains:
- 'page=team-manager'
- 'file=../'
- 'file=..\\'
- 'file=/etc/'
- 'file=wp-config'
condition: selection
falsepositives:
- Legitimate use of file parameter (unlikely)
level: high
Suricata Rule
alert http any any -> any any (msg:"CVE-2025-30868 Team Manager LFI Attempt"; flow:to_server,established; content:"page=team-manager"; http_uri; content:"file="; http_uri; pcre:"/file=(\.\.\/|\.\.\\|\/etc\/|wp-config)/Ui"; classtype:attempted-recon; sid:1000001; rev:1;)
Remediation & Mitigation
Immediate Actions:
- Disable or remove the Team Manager plugin from all WordPress installations.
- If the plugin is essential, implement a virtual patch using a Web Application Firewall (WAF) to block requests containing path traversal patterns in the
fileparameter. - Audit all WordPress sites for the presence of this plugin and ensure it is not active.
Long-Term Mitigation:
- Replace the plugin with an alternative that is actively maintained and patched.
- Implement a WordPress hardening policy, including:
- Regular plugin updates.
- Principle of least privilege for file permissions.
- Use of security plugins (e.g., Wordfence) to detect LFI attempts.
- Monitor for any signs of compromise, such as unauthorized file reads or modified core files.
Patch Status: No official patch available. The vendor (Maidul) has not responded. Users are advised to treat this as an unpatched vulnerability and take defensive measures.
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.