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

CVE-2025-69186

CVE-2025-69186 Missing Authorization in E-plugins
📅 PUBLISHED: 2026-01-22 16:52 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: 0.07%
👁️
0.07% probability
1.8× above the median CVE
Tier: LOW
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 7.3
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.3
THREAT LEVEL
■ tracking this CVE ✓ independent patch confirmation ⧗ same-origin mirror (GHSA) ⚠ active exploitation verification policy →

Executive Summary

CVE-2025-69186 is a Missing Authorization vulnerability (CWE-862) in the Hospital Doctor Directory WordPress plugin by e-plugins, affecting 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 data or functionality. The vulnerability is classified as High Severity with a CVSS score of 7.3, yet the EPSS score is 0.0%, indicating low exploitation likelihood at this time. No public proof-of-concept (PoC) or patch is currently available, making proactive detection and mitigation critical.

⚡ 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 resides in a WordPress plugin distributed via the official WordPress plugin repository. The plugin is not available on NPM, PyPI, Go, or Ruby ecosystems. However, as a WordPress plugin, it is part of a broader supply chain where site administrators must ensure plugins are kept updated and sourced from trusted channels. The lack of a patch from the vendor (e-plugins) means that sites running version 1.3.9 or earlier are exposed until a fix is released or the plugin is removed.

CVSS Breakdown & Threat Level

  • CVSS Score: 7.3 (High)
  • Vector: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N
  • 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 victim action required.
  • Scope: Unchanged (S:U) – impact confined to the vulnerable component.
  • Confidentiality Impact: High (C:H) – potential for significant data disclosure.
  • Integrity Impact: None (I:N) – no data modification.
  • Availability Impact: None (A:N) – no denial of service.

Threat Level: High. The vulnerability is easy to exploit remotely without authentication, and while no public exploit exists, the potential for data exposure (e.g., patient records, doctor directories) makes it a priority for remediation.

Deep Dive & Mechanics

The vulnerability stems from missing authorization checks in the Hospital Doctor Directory plugin. WordPress plugins often expose REST API endpoints or AJAX actions that should be protected by capability checks (e.g., current_user_can()). In this case, the plugin fails to verify that the requesting user has the necessary permissions before executing sensitive operations.

Root Cause: The plugin likely registers AJAX actions or REST routes without implementing proper nonce verification or user capability checks. For example, an endpoint intended for administrators to manage doctor listings may be accessible to unauthenticated users, allowing them to read, modify, or delete data.

Attack Vector: An attacker can send crafted HTTP requests to the vulnerable endpoint(s) without authentication. The exact endpoint is not publicly documented, but common patterns include:

  • /wp-admin/admin-ajax.php?action=hospital_doctor_*
  • /wp-json/hospital-doctor-directory/v1/*

Impact: Successful exploitation could lead to:

  • Unauthorized access to doctor directory data (names, specialties, contact info).
  • Potential exposure of patient-related metadata if stored in the same database.
  • Further privilege escalation if the plugin interacts with other WordPress components.

Vulnerable vs. Patched Code

Since no patch is available, a hypothetical fix would involve adding authorization checks to all AJAX and REST endpoints. Below is an example of vulnerable vs. patched code for a typical AJAX handler.

Vulnerable Code (version <= 1.3.9):

add_action('wp_ajax_nopriv_hospital_get_doctors', 'hospital_get_doctors');
add_action('wp_ajax_hospital_get_doctors', 'hospital_get_doctors');

function hospital_get_doctors() {
    global $wpdb;
    $results = $wpdb->get_results("SELECT * FROM wp_hospital_doctors");
    wp_send_json($results);
}

Patched Code (hypothetical):

add_action('wp_ajax_hospital_get_doctors', 'hospital_get_doctors');

function hospital_get_doctors() {
    // Check if user has required capability
    if (!current_user_can('edit_posts')) {
        wp_die('Unauthorized', 403);
    }
    // Verify nonce
    if (!wp_verify_nonce($_REQUEST['_wpnonce'], 'hospital_get_doctors_nonce')) {
        wp_die('Nonce verification failed', 403);
    }
    global $wpdb;
    $results = $wpdb->get_results("SELECT * FROM wp_hospital_doctors");
    wp_send_json($results);
}

Key Differences:

  • Removal of wp_ajax_nopriv_* hook to prevent unauthenticated access.
  • Addition of current_user_can() check.
  • Implementation of nonce verification.

Exploitation & Lab Setup

Red Team (Exploitation)

Prerequisites:

  • Target WordPress site with Hospital Doctor Directory plugin <= 1.3.9.
  • Network access to the target.

Exploitation Steps:

  1. Identify Vulnerable Endpoint: Use a tool like Burp Suite or curl to probe for AJAX actions. Common actions include hospital_get_doctors, hospital_add_doctor, hospital_delete_doctor.
  2. Craft Request: Send a POST request to /wp-admin/admin-ajax.php with the action parameter.
    curl -X POST http://target.com/wp-admin/admin-ajax.php \
      -d "action=hospital_get_doctors"
    
  3. Extract Data: If successful, the response will contain JSON data from the database.

Example Output:

[
  {"id":1,"name":"Dr. Smith","specialty":"Cardiology","phone":"123-456-7890"},
  {"id":2,"name":"Dr. Jones","specialty":"Neurology","phone":"098-765-4321"}
]

Blue Team (Detection & Response)

Detection Steps:

  1. Monitor AJAX Requests: Look for unusual patterns in admin-ajax.php requests, especially those without a valid nonce or from unauthenticated users.
  2. Check Logs: Review WordPress debug logs for unauthorized access attempts.
  3. Network Monitoring: Detect anomalous traffic to /wp-admin/admin-ajax.php with unknown action parameters.

Response:

  • Immediately disable the plugin if exploitation is suspected.
  • Review database for unauthorized changes or data exfiltration.
  • Rotate any exposed credentials or API keys.

Indicators of Compromise (IOCs)

  • Network IOCs:
    • HTTP POST requests to /wp-admin/admin-ajax.php with action=hospital_* parameters from unauthenticated sources.
    • Unusual JSON responses containing doctor directory data.
  • File IOCs:
    • Modified plugin files (e.g., hospital-doctor-directory.php) with added backdoors.
    • Unexpected files in /wp-content/plugins/hospital-doctor-directory/.
  • Log IOCs:
    • WordPress debug log entries showing wp_ajax_nopriv_hospital_* calls.
    • Web server logs with 200 responses to admin-ajax.php from unknown IPs.

Detection Engineering

YARA Rule

rule Detect_Hospital_Doctor_Directory_Vuln {
    meta:
        description = "Detects vulnerable Hospital Doctor Directory plugin files"
        author = "Valters IT"
        date = "2025-04-10"
        cve = "CVE-2025-69186"
    strings:
        $vuln_func = "wp_ajax_nopriv_hospital_" ascii wide nocase
        $vuln_hook = "add_action('wp_ajax_nopriv_hospital_" ascii wide nocase
    condition:
        $vuln_func or $vuln_hook
}

Sigma Rule

title: Unauthenticated AJAX Request to Hospital Doctor Directory
id: 8f7b3c2a-1d4e-5f6a-7b8c-9d0e1f2a3b4c
status: experimental
description: Detects unauthenticated AJAX requests targeting Hospital Doctor Directory plugin
author: Valters IT
date: 2025-04-10
logsource:
    category: webserver
    product: apache
    service: access
detection:
    selection:
        cs-method: 'POST'
        cs-uri-query|contains: '/wp-admin/admin-ajax.php'
        cs-uri-query|contains: 'action=hospital_'
        sc-status: 200
    condition: selection
falsepositives:
    - Legitimate admin actions (rare)
level: high

Suricata Rule

alert http any any -> $HOME_NET any (
    msg:"CVE-2025-69186 - Unauthenticated Hospital Doctor Directory AJAX Request";
    flow:to_server,established;
    content:"POST";
    http_method;
    content:"/wp-admin/admin-ajax.php";
    http_uri;
    content:"action=hospital_";
    http_client_body;
    classtype:attempted-recon;
    sid:1000001;
    rev:1;
)

Remediation & Mitigation

Immediate Actions:

  1. Disable the Plugin: If the plugin is not critical, deactivate and delete it until a patch is released.
  2. Web Application Firewall (WAF): Block requests to /wp-admin/admin-ajax.php containing action=hospital_ from unauthenticated users.
  3. Access Controls: Restrict access to admin-ajax.php via .htaccess or server config:
    <Files "admin-ajax.php">
        Require all denied
        Require ip 127.0.0.1
    </Files>
    

Long-Term Fixes:

  • Monitor the plugin's repository for updates and apply patches immediately.
  • Conduct a security audit of all WordPress plugins to identify similar authorization flaws.
  • Implement a Content Security Policy (CSP) to mitigate data exfiltration.

Workaround: If the plugin must remain active, consider adding a custom function to enforce authorization:

add_action('init', function() {
    if (defined('DOING_AJAX') && DOING_AJAX) {
        if (strpos($_REQUEST['action'], 'hospital_') === 0) {
            if (!current_user_can('edit_posts')) {
                wp_die('Unauthorized', 403);
            }
        }
    }
});

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:"Hospital Doctor Directory"
http.html:"wp-content/plugins/hospital-doctor-directory"

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