☠️
EXFILTRATING
DATA...
01010111 10110010 00101001 11000110 01101100 10011011 00010001 11100101 01000010 10101111
[ <-- BACK_TO_SEARCH ]
Hossein logo [ WEBSITE ] [ VENDOR STATS ]
CVSS: 8.1 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-31097

CVE-2025-31097 Local File Inclusion in Hossein
📅 PUBLISHED: 2025-04-01 21:15 UTC 🔄 UPDATED: 2026-08-12 14:52 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.94%
👁️
1.94% probability
48.5× above the median CVE
Tier: HIGH
30-day exploitation window · FIRST.org · updated daily
🥷 MITRE: T1190
👁️
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 8.1
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
8.1
THREAT LEVEL
■ tracking this CVE ✓ independent patch confirmation ⧗ same-origin mirror (GHSA) ⚠ active exploitation verification policy →

Executive Summary

CVE-2025-31097 is a critical PHP Local File Inclusion (LFI) vulnerability affecting the Material Dashboard WordPress plugin by Hossein, up to and including version 1.4.5. The vulnerability stems from improper control of filenames used in PHP include/require statements, allowing an unauthenticated attacker to include arbitrary local files from the server. This can lead to sensitive information disclosure (e.g., /etc/passwd, wp-config.php), and in some configurations, may be chained with file upload vulnerabilities to achieve Remote Code Execution (RCE). The CVSS score is 8.1 (High), and no official patch is currently available. This is a WordPress ecosystem issue; the vulnerable plugin is installed as a WordPress component.

⚡ 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 a WordPress plugin distributed via the WordPress plugin repository. The plugin is not an NPM, PyPI, Go, or Ruby package. The supply chain risk is moderate, as the plugin is maintained by a third-party developer (Hossein) and no patch has been released. Users should monitor for updates and consider removing the plugin if it is not critical.

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: 8.1 (High)
  • Attack Vector: Network (AV:N) – Exploitable remotely.
  • Attack Complexity: Low (AC:L) – No special conditions required.
  • Privileges Required: None (PR:N) – No authentication needed.
  • User Interaction: None (UI:N) – No user action required.
  • Scope: Unchanged (S:U) – Vulnerability does not affect other components.
  • Confidentiality Impact: High (C:H) – Full file read access.
  • Integrity Impact: None (I:N) – Cannot modify files directly.
  • Availability Impact: None (A:N) – No denial of service.

Threat Level: High. The low attack complexity and lack of authentication make this a prime target for automated scanning and exploitation.

Deep Dive & Mechanics

The vulnerability exists in the material-dashboard plugin's PHP code, likely in a file that handles template loading or includes. The plugin fails to sanitize user-supplied input used in a PHP include() or require() statement. An attacker can manipulate a parameter (e.g., page, file, template) to traverse directories and include arbitrary files.

Root Cause: The plugin uses user input directly in a file inclusion function without proper validation or sanitization. For example:

include($_GET['page'] . '.php');

An attacker can supply ../../../../etc/passwd%00 to null-terminate the string and include /etc/passwd.

Exploitation Scenario:

  1. Attacker identifies a vulnerable parameter (e.g., page) in the plugin's URL.
  2. Attacker sends a crafted request: http://target.com/wp-content/plugins/material-dashboard/vulnerable.php?page=../../../../etc/passwd%00
  3. The server includes the /etc/passwd file, displaying its contents.

Impact:

  • Disclosure of sensitive files (e.g., wp-config.php with database credentials).
  • Potential for RCE if combined with file upload or log poisoning.

Vulnerable vs. Patched Code

Since no patch is available, the vulnerable code is presumed to be similar to the following:

Vulnerable Code (hypothetical):

<?php
$page = $_GET['page'];
include($page . '.php');
?>

Patched Code (recommended):

<?php
$allowed_pages = array('dashboard', 'settings', 'profile');
$page = $_GET['page'];
if (in_array($page, $allowed_pages)) {
    include($page . '.php');
} else {
    // Handle error
    echo 'Invalid page.';
}
?>

Key Differences:

  • The patched version uses a whitelist of allowed values.
  • The vulnerable version directly uses user input without validation.

Exploitation & Lab Setup

Red Team (Exploitation)

Prerequisites:

  • Target running WordPress with Material Dashboard plugin <= 1.4.5.
  • A parameter that controls file inclusion (e.g., page, file, template).

Exploit Steps:

  1. Identify the vulnerable endpoint. Common patterns: /wp-content/plugins/material-dashboard/ followed by a PHP file that accepts a page parameter.
  2. Test for LFI using path traversal:
    http://target.com/wp-content/plugins/material-dashboard/some-file.php?page=../../../../etc/passwd%00
    
  3. If successful, read sensitive files:
    • wp-config.php: page=../../../../wp-config.php%00
    • /etc/passwd: page=../../../../etc/passwd%00

Example cURL command:

curl -v 'http://target.com/wp-content/plugins/material-dashboard/vuln.php?page=../../../../etc/passwd%00'

Note: No public exploit code is available from Exploit-DB. The above is a generic LFI exploitation technique.

Blue Team (Detection & Hardening)

Detection:

  • Monitor web server logs for path traversal patterns (e.g., ../, %00, ../../).
  • Look for requests to plugin files with suspicious parameters.

Hardening:

  • Remove or disable the plugin if not needed.
  • Implement a Web Application Firewall (WAF) rule to block path traversal.
  • Apply virtual patching: block requests containing ../ or %00 in plugin parameters.

Lab Setup:

  • Use a local WordPress installation with the vulnerable plugin.
  • Simulate attacks using Burp Suite or custom scripts.
  • Monitor logs with tools like ELK or Splunk.

Indicators of Compromise (IOCs)

Network IOCs:

  • HTTP requests containing ../ or %00 in parameters targeting /wp-content/plugins/material-dashboard/.
  • Repeated 200 responses with file contents (e.g., root:x:0:0:root).

File IOCs:

  • Unexpected inclusion of system files in web responses.
  • Modified plugin files (if attacker uploads a webshell).

Log IOCs:

  • Apache/Nginx access logs showing:
    GET /wp-content/plugins/material-dashboard/vuln.php?page=../../../../etc/passwd%00 HTTP/1.1
    
  • Error logs showing failed include attempts.

Detection Engineering

YARA Rule

rule CVE_2025_31097_LFI_Detection {
    meta:
        description = "Detects LFI attempts targeting Material Dashboard plugin"
        author = "Valters IT"
        date = "2025-04-10"
        cve = "CVE-2025-31097"
    strings:
        $path_traversal = /\.\.\/|\.\.\\|%00/
        $plugin_path = /material-dashboard/
    condition:
        $plugin_path and $path_traversal
}

Sigma Rule

title: CVE-2025-31097 LFI Attempt
id: 8a9b7c6d-5e4f-3a2b-1c0d-9e8f7a6b5c4d
status: experimental
description: Detects path traversal attempts in Material Dashboard plugin
author: Valters IT
logsource:
    category: webserver
    product: apache
detection:
    selection:
        cs-uri-query|contains:
            - '../'
            - '..\\'
            - '%00'
        cs-uri-stem|contains: '/material-dashboard/'
    condition: selection
falsepositives:
    - Legitimate use of dots in filenames (rare)
level: high

Suricata Rule

alert http any any -> any any (msg:"CVE-2025-31097 LFI Attempt"; flow:to_server,established; content:"/material-dashboard/"; http_uri; content:"../"; http_uri; distance:0; content:"%00"; http_uri; distance:0; classtype:attempted-recon; sid:1000001; rev:1;)

Remediation & Mitigation

Immediate Actions:

  1. Disable the plugin if not essential: Deactivate and delete material-dashboard from WordPress admin.
  2. Apply virtual patching via WAF: Block requests containing ../ or %00 in plugin parameters.
  3. Monitor logs for exploitation attempts.

Long-term Fix:

  • The vendor (Hossein) must release a patched version that implements input validation (whitelist) and proper file path sanitization.
  • Until a patch is available, consider replacing the plugin with an alternative.

Workaround:

  • Modify the plugin code manually to add a whitelist (if you have developer access). This is not recommended for non-technical users.

Valters IT
Securing Digital Frontiers

👁️ 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:"Material Dashboard"
http.html:"material-dashboard" "wp-content"

💣 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-31097/ · 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.