CVE-2025-47496
Executive Summary
CVE-2025-47496 is a critical PHP Local File Inclusion (LFI) vulnerability discovered in the PublishPress Authors WordPress plugin, affecting versions up to and including 4.7.5. 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 score is 7.5 (High), and no public proof-of-concept or patch is currently available. This vulnerability is specific to the WordPress ecosystem and does not affect Apache or Nginx directly.
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 are advised to monitor for updates from PublishPress and apply patches immediately upon release. The plugin is not distributed via NPM, PyPI, Go, or Ruby registries.
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 is needed.
- User Interaction (UI): None (N) – No user action is required.
- Scope (S): Unchanged (U) – The vulnerable component remains the same.
- Confidentiality (C): High (H) – Sensitive files can be read.
- Integrity (I): None (N) – No file modification is possible.
- Availability (A): None (N) – No denial of service.
Threat Level: High. The low attack complexity and lack of required privileges make this a significant risk for any WordPress site using the vulnerable plugin.
Deep Dive & Mechanics
The vulnerability lies in the publishpress-authors plugin's handling of file inclusion. The plugin likely uses a user-supplied parameter (e.g., page, tab, or file) in a PHP include() or require() statement without proper sanitization or validation. An attacker can manipulate this parameter to include arbitrary files from the server's filesystem.
Example vulnerable code pattern:
$file = $_GET['file'];
include( $file . '.php' );
An attacker could request:
http://target.com/wp-admin/admin.php?page=../../../../etc/passwd%00
The null byte (%00) may be used to terminate the string, bypassing the .php extension append. Alternatively, path traversal sequences (../) allow reading files outside the intended directory.
The vulnerability is classified as CWE-98: Improper Control of Filename for Include/Require Statement in PHP Program ('PHP Remote File Inclusion'), though in this case it is limited to local file inclusion (LFI) as the plugin does not allow remote URLs.
Vulnerable vs. Patched Code
Vulnerable Code (<= 4.7.5):
// Hypothetical vulnerable snippet
$page = $_GET['page'];
include( plugin_dir_path( __FILE__ ) . 'admin/views/' . $page . '.php' );
The $page parameter is not sanitized, allowing path traversal.
Patched Code (Hypothetical):
// Patched version
$allowed_pages = array( 'settings', 'authors', 'groups' );
$page = sanitize_key( $_GET['page'] );
if ( in_array( $page, $allowed_pages ) ) {
include( plugin_dir_path( __FILE__ ) . 'admin/views/' . $page . '.php' );
} else {
wp_die( 'Invalid page.' );
}
The patched version uses a whitelist of allowed values and sanitizes the input.
Exploitation & Lab Setup
Red Team (Offensive)
Lab Setup:
- Install WordPress with PublishPress Authors plugin version 4.7.5.
- Ensure the site is accessible over the network.
Exploitation Steps:
- Identify the vulnerable parameter (e.g.,
pageinadmin.php). - Craft a request to read sensitive files:
GET /wp-admin/admin.php?page=../../../../../../etc/passwd HTTP/1.1 Host: target.com - If the plugin appends
.php, use a null byte or path traversal to bypass:GET /wp-admin/admin.php?page=../../../../../../etc/passwd%00 HTTP/1.1 - Read
wp-config.phpfor database credentials:GET /wp-admin/admin.php?page=../../../../../../wp-config.php%00 HTTP/1.1
Note: No public exploit code is available. The above is a generic LFI exploitation technique.
Blue Team (Defensive)
Detection:
- Monitor web server logs for path traversal patterns (e.g.,
../,%00). - Look for requests to
admin.phpwith unusualpageparameters. - Use WAF rules to block directory traversal sequences.
Hunting:
- Search for
includeorrequirestatements in the plugin's code that use user input without validation. - Check for file inclusion attempts in access logs.
Indicators of Compromise (IOCs)
- File Paths:
/etc/passwd,/wp-config.php,/etc/shadow - URL Patterns:
admin.php?page=../../../../etc/passwd%00 - Log Entries: Requests containing
../or%00in thepageparameter. - Plugin Version: PublishPress Authors <= 4.7.5
Detection Engineering
YARA Rule
rule CVE_2025_47496_LFI_Attempt {
meta:
description = "Detects LFI attempts targeting PublishPress Authors plugin"
author = "Valters IT"
date = "2025-04-10"
reference = "CVE-2025-47496"
strings:
$path_traversal = /page=[^&]*\.\.\//
$null_byte = /%00/
$sensitive_file = /(etc\/passwd|wp-config\.php|etc\/shadow)/
condition:
any of ($path_traversal) and any of ($null_byte) or any of ($sensitive_file)
}
Sigma Rule
title: CVE-2025-47496 LFI Attempt
id: 8a9b7c6d-5e4f-3a2b-1c0d-9e8f7a6b5c4d
status: experimental
description: Detects path traversal attempts in PublishPress Authors plugin
author: Valters IT
date: 2025-04-10
logsource:
category: webserver
product: apache
service: access
detection:
selection:
cs-uri-query|contains:
- 'page=../'
- 'page=..%2f'
- '%00'
condition: selection
falsepositives:
- Legitimate use of similar patterns (rare)
level: high
Suricata Rule
alert http any any -> $HOME_NET any (
msg:"CVE-2025-47496 - PublishPress Authors LFI Attempt";
flow:to_server,established;
content:"admin.php"; http_uri;
content:"page="; http_uri;
pcre:"/page=[^&]*\.\.\//i";
sid:1000001;
rev:1;
reference:cve,2025-47496;
classtype:attempted-recon;
priority:1;
)
Remediation & Mitigation
Immediate Actions:
- Disable the plugin until a patch is available.
- Implement a Web Application Firewall (WAF) rule to block path traversal patterns.
- Restrict file permissions on sensitive files (e.g.,
wp-config.phpshould be readable only by the web server user).
Long-term Fix:
- Update to the latest version of PublishPress Authors once a patch is released.
- Apply input validation and whitelisting for all file inclusion parameters.
- Use
realpath()to resolve paths and ensure they are within the allowed directory.
Monitoring:
- Enable detailed logging for web server access and error logs.
- Set up alerts for multiple LFI attempts from the same IP.
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.