
Plugin SMS & OTP pour WooCommerce, notifications de commandes et récupération de panier abandonné pour WordPress ; SMS Alert <3.9.6 ; Élévation de privilèges non authentifiée (réinitialisation forcée du mot de passe)

SMS Alert ≤ 3.9.5 — élévation de privilèges non authentifiée via réinitialisation arbitraire du mot de passe
Une faille critique d'authentification inappropriée dans le plugin WordPress SMS Alert – SMS & OTP for WooCommerce, Order Notifications & Abandoned Cart Recovery. Lorsque la vérification OTP est activée pour les réinitialisations de mot de passe, un appelant non authentifié peut définir un nouveau mot de passe pour un utilisateur disposant d'un numéro de téléphone enregistré — y compris les administrateurs — sans prouver qu'il possède ce téléphone.
| CVE | CVE-2026-11387 |
| CWE | CWE-287: Improper Authentication |
| CVSS 3.1 | 9.8 Critique (AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H) |
| Éditeur | Cozy Vision Technologies Pvt. Ltd. |
| Produit | SMS Alert (sms-alert) |
| Versions concernées | Toutes les versions jusqu'à 3.9.5 |
| Correctif | 3.9.6 (27 juin 2026) |
| CNA | Wordfence |
Ce dépôt contient une preuve de concept d'Abraxas Labs pour tests autorisés uniquement — divulgation au fournisseur, reproduction en laboratoire, ou un hôte pour lequel vous disposez d'une autorisation écrite d'évaluation.
SMS Alert s'intègre au flux de mot de passe perdu de WooCommerce / WordPress afin qu'un code à usage unique envoyé par SMS soit censé contrôler le nouveau mot de passe. Dans les versions concernées, le gestionnaire derrière option=smsalert-change-password-form applique smsalert_user_newpwd sans vérifier que l'appelant a terminé la vérification OTP ou possède autrement le compte.
L'enregistrement CVE officiel note également que la même absence de vérification d'identité peut être utilisée pour modifier l'adresse e-mail d'une victime puis prendre le contrôle du compte via une réinitialisation normale. Les deux chemins constituent une prise de contrôle de compte non authentifiée.
Les sites ne sont exposés que lorsque les deux conditions suivantes sont réunies :
billing_phone).Dans ces conditions, l'impact est une compromission totale du compte choisi. Une prise de contrôle d'un administrateur équivaut à une compromission complète du site.
| Condition | Résultat |
|---|---|
| Accès réseau non authentifié | Aucun identifiant WordPress requis |
| La cible est un client / abonné | Prise de contrôle du compte de ce client |
| La cible est un administrateur | Élévation de privilèges vers wp-admin, installation de plugins/thèmes, malware persistant |
La confidentialité, l'intégrité et la disponibilité sont toutes élevées : l'attaquant peut lire les commandes et les données personnelles, modifier le contenu du site et les utilisateurs, et verrouiller le propriétaire légitime.
La réinitialisation de mot de passe avec SMS Alert ressemble approximativement à ceci :
demande de mot de passe perdu → OTP vers le téléphone de l'utilisateur → POST de changement de mot de passe vérifié
L'étape défaillante est la dernière. Le plugin route sur $_REQUEST['option'] == 'smsalert-change-password-form' (voir class-wpresetpassword.php dans la version 3.9.5) puis écrit le mot de passe soumis. Il ne lie pas ce POST à une session OTP antérieure, un nonce ou une vérification de capacité qui prouverait que l'appelant est l'utilisateur nommé dans la réinitialisation.
Cette preuve de concept reste sur ce gestionnaire :
POST vers WooCommerce /my-account/lost-password/ et /wp-login.php?action=lostpassword avec wc_reset_password défini, afin que le chemin de réinitialisation du plugin soit entré pour le nom d'utilisateur de la victime.POST option=smsalert-change-password-form plus smsalert_user_newpwd / smsalert_user_cnfpwd vers /, /my-account/lost-password/, et l'action de mot de passe perdu de wp-login. Un en-tête Location contenant password-reset=true est traité comme un succès.Aucun OTP n'est soumis. C'est là la faille.
CVE-2026-11387-WooCommerce-SMS-OTP-Abraxas-Labs.py est un petit client Python 3 : bannière colorée, puis les trois étapes ci-dessus. Il ne communique qu'avec l'URL que vous passez en ligne de commande.
requestsSur macOS avec Homebrew Python (PEP 668), utilisez un venv plutôt qu'un pip install système :
python3 -m venv .venv
.venv/bin/pip install requests
CVE-2026-11387-WooCommerce-SMS-OTP-Abraxas-Labs.py <base_url> <victim_username> [new_password]
.venv/bin/python3 CVE-2026-11387-WooCommerce-SMS-OTP-Abraxas-Labs.py \
https://shop.example \
admin
Un troisième argument définit le mot de passe à appliquer ; la valeur par défaut est abr4x4s#L4b5.
Sans arguments, le script affiche la bannière et l'utilisation, puis se termine avec le code 1. C'est un moyen sûr de confirmer que le client démarre.
Le site WordPress cible doit exécuter SMS Alert ≤ 3.9.5, avec l'OTP sur réinitialisation activé, et le nom d'utilisateur de la victime doit déjà avoir un numéro de téléphone pour l'OTP. Contre un site corrigé en 3.9.6+, ou un utilisateur sans téléphone, la vérification de connexion devrait échouer.
Ne pointez pas cet outil vers un hôte que vous ne possédez pas ou pour lequel vous n'avez pas d'autorisation écrite de test.
wp-admin de la fenêtre concernée comme non fiables.class-ultimatemember.php (Trac)Usage de recherche et pédagogique uniquement. N'exécutez, ne déployez et n'utilisez ce matériel contre aucun hôte sans autorisation écrite explicite de la partie hébergeant ce dépôt et du propriétaire des systèmes cibles.
Abraxas Labs · abraxaslabs.tech · github.com/abraxas · @abraxas_null
wp-login.php