
SMS & OTP für WooCommerce, Bestellbenachrichtigungen & Abandoned-Cart-Recovery-Plugin für WordPress; SMS Alert <3.9.6; Nicht authentifizierte Privilegienausweitung (Erzwungenes Zurücksetzen des Passworts)

SMS Alert ≤ 3.9.5 - unauthentifizierte Rechteausweitung über beliebigen Passwort-Reset
Eine kritische Schwachstelle der unzureichenden Authentifizierung im WordPress-Plugin SMS Alert - SMS & OTP for WooCommerce, Order Notifications & Abandoned Cart Recovery. Wenn die OTP-Verifizierung für Passwort-Resets aktiviert ist, kann ein unauthentifizierter Aufrufer ein neues Passwort für einen Benutzer festlegen, der eine Telefonnummer hinterlegt hat - einschließlich Administratoren -, ohne den Besitz dieses Telefons nachzuweisen.
| CVE | CVE-2026-11387 |
| CWE | CWE-287: Improper Authentication |
| CVSS 3.1 | 9.8 Critical (AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H) |
| Hersteller | Cozy Vision Technologies Pvt. Ltd. |
| Produkt | SMS Alert (sms-alert) |
| Betroffen | Alle Versionen bis einschließlich 3.9.5 |
| Gepatcht | 3.9.6 (27. Juni 2026) |
| CNA | Wordfence |
Dieses Repository enthält einen Abraxas-Labs-Proof-of-Concept für ausschließlich autorisierte Tests - Vendor-Disclosure, Lab-Reproduktion oder einen Host, für dessen Bewertung Sie eine schriftliche Genehmigung besitzen.
SMS Alert hängt sich in den Lost-Password-Ablauf von WooCommerce / WordPress ein, sodass ein per SMS versandter Einmalcode das neue Passwort absichern soll. In betroffenen Versionen wendet der Handler hinter option=smsalert-change-password-form smsalert_user_newpwd an, ohne zu prüfen, ob der Aufrufer die OTP-Verifizierung abgeschlossen hat oder anderweitig Eigentümer des Kontos ist.
Der offizielle CVE-Eintrag merkt außerdem an, dass dieselbe fehlende Identitätsprüfung genutzt werden kann, um die E-Mail-Adresse eines Opfers zu ändern und das Konto anschließend über einen normalen Reset zu übernehmen. Beide Wege sind unauthentifizierte Kontoübernahme.
Websites sind nur exponiert, wenn beide der folgenden Bedingungen zutreffen:
billing_phone).Unter diesen Bedingungen ist die Auswirkung die vollständige Kompromittierung des gewählten Kontos. Eine Administratorübernahme bedeutet die vollständige Kompromittierung der Website.
| Bedingung | Ergebnis |
|---|---|
| Unauthentifizierter Netzwerkzugriff | Keine WordPress-Anmeldedaten erforderlich |
| Ziel ist ein Käufer / Abonnent | Kontoübernahme dieses Kunden |
| Ziel ist ein Administrator | Rechteausweitung bis wp-admin, Plugin-/Theme-Installation, persistente Malware |
Vertraulichkeit, Integrität und Verfügbarkeit sind alle hoch: Der Angreifer kann Bestellungen und personenbezogene Daten lesen, Website-Inhalte und Benutzer ändern und den rechtmäßigen Eigentümer aussperren.
Ein Passwort-Reset mit SMS Alert sieht ungefähr so aus:
lost-password request → OTP to the user’s phone → verified change-password POST
Der defekte Schritt ist der letzte. Das Plugin leitet anhand von $_REQUEST['option'] == 'smsalert-change-password-form' weiter (siehe class-wpresetpassword.php in 3.9.5) und schreibt dann das übermittelte Passwort. Es bindet diesen POST nicht an eine vorherige OTP-Sitzung, einen Nonce oder eine Capability-Prüfung, die belegen würde, dass der Aufrufer der im Reset genannte Benutzer ist.
Dieser Proof-of-Concept bleibt bei diesem Handler:
POST an WooCommerce /my-account/lost-password/ und /wp-login.php?action=lostpassword mit gesetztem wc_reset_password, sodass der Reset-Pfad des Plugins für den Opfer-Benutzernamen betreten wird.POST von option=smsalert-change-password-form plus smsalert_user_newpwd / smsalert_user_cnfpwd an /, /my-account/lost-password/ und die wp-login-Lost-Password-Action. Ein Location-Header, der password-reset=true enthält, wird als Erfolg gewertet.wp-login.php mit dem neuen Passwort, damit ein Lab-Durchlauf eine echte Übernahme von einem Fehlschlag unterscheiden kann (OTP-Option aus oder keine Telefonnummer beim Benutzer).Es wird kein OTP übermittelt. Das ist der Bug.
CVE-2026-11387-WooCommerce-SMS-OTP-Abraxas-Labs.py ist ein kleiner Python-3-Client: farbiges Banner, dann die drei oben genannten Schritte. Er kommuniziert ausschließlich mit der URL, die Sie auf der Kommandozeile übergeben.
requestsUnter macOS mit Homebrew-Python (PEP 668) verwenden Sie ein venv statt eines systemweiten pip install:
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
Ein drittes Argument legt das anzuwendende Passwort fest; der Standardwert ist abr4x4s#L4b5.
Ohne Argumente gibt das Skript das Banner und die Verwendung aus und beendet sich dann mit 1. Das ist eine sichere Möglichkeit zu bestätigen, dass der Client startet.
Die Ziel-WordPress-Website muss SMS Alert ≤ 3.9.5 ausführen, mit aktiviertem OTP-bei-Reset, und der Opfer-Benutzername muss bereits eine Telefonnummer für OTP haben. Gegen eine gepatchte 3.9.6+-Website oder einen Benutzer ohne Telefonnummer wird die Login-Prüfung voraussichtlich fehlschlagen.
Richten Sie dies nicht auf einen Host, den Sie nicht besitzen oder für dessen Test Sie keine schriftliche Genehmigung haben.
wp-admin-Sitzungen aus dem relevanten Zeitfenster als nicht vertrauenswürdig.class-ultimatemember.php (Trac)Nur für Forschungs- und Bildungszwecke. Führen Sie dieses Material nicht aus, setzen Sie es nicht ein und verwenden Sie es nicht gegen einen Host, es sei denn, Sie haben die ausdrückliche schriftliche Genehmigung sowohl der Partei, die dieses Repository hostet, als auch des Eigentümers der Zielsysteme.
Abraxas Labs · abraxaslabs.tech · github.com/abraxas · @abraxas_null