CVE-2025-30829
Executive Summary
CVE-2025-30829 is a critical PHP Local File Inclusion (LFI) vulnerability discovered in the WordPress plugin WPCafe by Arraytics. The vulnerability stems from improper control of a filename used in a PHP include/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. The vulnerability affects all versions of WPCafe up to and including 2.2.31. No public proof-of-concept (PoC) or patch details are currently available, but the CVSS score of 7.5 indicates a high severity risk.
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 the WordPress plugin ecosystem. Since WPCafe is distributed via the official WordPress plugin repository, any site running a vulnerable version is at risk. Administrators should monitor for updates from the vendor and apply patches immediately when released.
CVSS Breakdown & Threat Level
- Attack Vector (AV): Network (N) – The vulnerability can be exploited remotely.
- Attack Complexity (AC): Low (L) – No special conditions are required.
- Privileges Required (PR): None (N) – No authentication needed.
- User Interaction (UI): None (N) – No user action required.
- Scope (S): Unchanged (U) – The exploit does not affect other components.
- Confidentiality (C): High (H) – Sensitive files can be read.
- Integrity (I): None (N) – No file modification possible.
- Availability (A): None (N) – No denial of service.
Threat Level: High. The vulnerability allows unauthenticated file reading, which can lead to full site compromise if credentials are exposed.
Deep Dive & Mechanics
The vulnerability resides in the WPCafe plugin's PHP code, where a user-supplied parameter is used directly in a PHP include() or require() statement without proper sanitization or validation. This allows an attacker to manipulate the file path to include arbitrary files from the server's filesystem.
Root Cause: The plugin likely uses a parameter like file or template to load dynamic content. The code does not restrict the path to a specific directory or validate the file extension, enabling path traversal attacks (e.g., ../../wp-config.php).
Impact: An attacker can read sensitive files such as:
wp-config.php(database credentials, salts)/etc/passwd(user enumeration)- Log files containing session tokens
Vulnerable vs. Patched Code
Since no patch is available, the vulnerable code pattern is hypothesized:
Vulnerable Code (hypothetical):
$file = $_GET['file'];
include( $file . '.php' );
Patched Code (expected):
$allowed_files = array('menu', 'cart', 'checkout');
$file = $_GET['file'];
if (in_array($file, $allowed_files)) {
include( $file . '.php' );
} else {
// error handling
}
The patch should implement a whitelist of allowed files or use realpath() to restrict the include path.
Exploitation & Lab Setup
Red Team (Attacker)
Lab Setup:
- Install WordPress with WPCafe plugin version 2.2.31.
- Ensure the site is accessible over the network.
Exploitation Steps:
- Identify the vulnerable parameter (e.g.,
file,template,page). - Craft a request to include a sensitive file:
GET /wp-content/plugins/wp-cafe/?file=../../../../wp-config HTTP/1.1 Host: target.com - The server will include the
wp-config.phpfile, revealing database credentials.
Note: No public exploit code is available, so this is a theoretical approach.
Blue Team (Defender)
Detection:
- Monitor web server logs for suspicious path traversal patterns (e.g.,
../sequences). - Look for requests to WPCafe endpoints with unexpected parameters.
- Use WAF rules to block path traversal attempts.
Mitigation:
- Disable the WPCafe plugin until a patch is applied.
- Implement file integrity monitoring to detect unauthorized changes.
Indicators of Compromise (IOCs)
- URL Patterns:
wp-content/plugins/wp-cafe/?file=..%2f..%2f..%2f..%2fwp-config - Log Entries: HTTP requests containing
../or%2e%2e%2fin the query string. - File Access: Unauthorized reads of
wp-config.php,/etc/passwd, or other sensitive files.
Detection Engineering
YARA Rule
rule CVE_2025_30829_WPCafe_LFI {
meta:
description = "Detects attempts to exploit CVE-2025-30829 in WPCafe plugin"
author = "Valters IT"
date = "2025-04-10"
reference = "https://nvd.nist.gov/vuln/detail/CVE-2025-30829"
strings:
$path_traversal = /\.\.\/|\.\.\\|%2e%2e%2f|%2e%2e\\/
$wp_cafe_param = /[?&]file=/
condition:
$wp_cafe_param and $path_traversal
}
Sigma Rule
title: CVE-2025-30829 WPCafe LFI Attempt
id: 8a9b3c4d-5e6f-7a8b-9c0d-1e2f3a4b5c6d
status: experimental
description: Detects path traversal attempts targeting WPCafe plugin
author: Valters IT
logsource:
category: webserver
product: apache
service: access
detection:
selection:
cs-uri-query|contains:
- 'wp-content/plugins/wp-cafe/'
- 'file='
- '../'
- '..\\'
- '%2e%2e%2f'
- '%2e%2e\\'
condition: selection
falsepositives:
- Legitimate use of relative paths in other plugins
level: high
Suricata Rule
alert http any any -> any any (msg:"CVE-2025-30829 WPCafe LFI Attempt"; flow:to_server,established; content:"wp-content/plugins/wp-cafe/"; http_uri; content:"file="; http_uri; pcre:"/(\.\.\/|\.\.\\|%2e%2e%2f|%2e%2e\\)/i"; sid:1000001; rev:1;)
Remediation & Mitigation
- Immediate Action: Disable the WPCafe plugin until a patched version is released.
- Vendor Patch: Monitor the WordPress plugin repository for updates and apply version 2.2.32 or later when available.
- WAF Rules: Deploy web application firewall rules to block path traversal patterns.
- File Permissions: Ensure sensitive files like
wp-config.phpare not readable by the web server user. - Monitoring: Enable logging and alerting for suspicious file inclusion attempts.
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.