
Plugin SMS & OTP per WooCommerce, notifiche degli ordini e recupero carrello abbandonato per WordPress; SMS Alert <3.9.6; Escalation dei privilegi non autenticata (reimpostazione forzata della password)

SMS Alert ≤ 3.9.5 — escalatione di privilegi non autenticata tramite reset arbitrario della password
Una vulnerabilità critica di autenticazione impropria nel plugin WordPress SMS Alert – SMS & OTP for WooCommerce, Order Notifications & Abandoned Cart Recovery. Quando la verifica OTP è abilitata per i reset delle password, un chiamante non autenticato può impostare una nuova password per un utente che ha un numero di telefono registrato — inclusi gli amministratori — senza dimostrare il possesso di quel telefono.
| 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) |
| Vendor | Cozy Vision Technologies Pvt. Ltd. |
| Product | SMS Alert (sms-alert) |
| Affected | Tutte le versioni fino alla 3.9.5 |
| Patched | 3.9.6 (27 giugno 2026) |
| CNA | Wordfence |
Questo repository contiene un proof-of-concept di Abraxas Labs solo per test autorizzati — divulgazione al vendor, riproduzione in laboratorio, o un host per cui hai il permesso scritto di valutazione.
SMS Alert aggancia il flusso di password dimenticata di WooCommerce / WordPress in modo che un codice monouso inviato via SMS debba proteggere la nuova password. Nelle versioni interessate, l'handler dietro option=smsalert-change-password-form applica smsalert_user_newpwd senza verificare che il chiamante abbia completato la verifica OTP o possieda altrimenti l'account.
Il record CVE ufficiale nota anche che la stessa mancanza di verifica dell'identità può essere usata per cambiare l'indirizzo email di una vittima e poi prendere il controllo dell'account tramite un reset normale. Entrambi i percorsi sono takeover dell'account non autenticato.
I siti sono esposti solo quando entrambe queste condizioni sono vere:
billing_phone).In queste condizioni, l'impatto è il compromesso totale dell'account scelto. Un takeover di un amministratore equivale a un compromesso completo del sito.
| Condizione | Risultato |
|---|---|
| Accesso di rete non autenticato | Nessuna credenziale WordPress richiesta |
| Il target è un cliente / abbonato | Takeover dell'account di quel cliente |
| Il target è un amministratore | Escalation di privilegi a wp-admin, installazione di plugin/temi, malware persistente |
Riservatezza, integrità e disponibilità sono tutte elevate: l'attaccante può leggere ordini e dati personali, modificare contenuti e utenti del sito, e bloccare il legittimo proprietario.
Il reset della password con SMS Alert funziona approssimativamente così:
richiesta password dimenticata → OTP al telefono dell'utente → POST di cambio password verificato
Il passaggio difettoso è l'ultimo. Il plugin instrada su $_REQUEST['option'] == 'smsalert-change-password-form' (vedi class-wpresetpassword.php nella 3.9.5) e poi scrive la password inviata. Non lega quel POST a una sessione OTP precedente, a un nonce, o a un controllo di capacità che dimostri che il chiamante è l'utente indicato nel reset.
Questo proof-of-concept si concentra su quell'handler:
POST a WooCommerce /my-account/lost-password/ e /wp-login.php?action=lostpassword con wc_reset_password impostato, così il percorso di reset del plugin viene attivato per il nome utente della vittima.POST option=smsalert-change-password-form più smsalert_user_newpwd / smsalert_user_cnfpwd a /, /my-account/lost-password/, e all'azione lost-password di wp-login. Un header Location contenente password-reset=true viene trattato come successo.Nessun OTP viene inviato. Questo è il bug.
CVE-2026-11387-WooCommerce-SMS-OTP-Abraxas-Labs.py è un piccolo client Python 3: banner colorato, poi i tre passaggi sopra. Comunica solo con l'URL che passi sulla riga di comando.
requestsSu macOS con Homebrew Python (PEP 668), usa un venv piuttosto che un pip install di sistema:
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 terzo argomento imposta la password da applicare; il default è abr4x4s#L4b5.
Senza argomenti lo script stampa il banner e l'utilizzo, poi esce con codice 1. Questo è un modo sicuro per confermare che il client si avvia.
Il sito WordPress target deve eseguire SMS Alert ≤ 3.9.5, con OTP sul reset abilitato, e il nome utente della vittima deve già avere un numero di telefono per l'OTP. Contro un sito patchato 3.9.6+, o un utente senza telefono, la verifica di login dovrebbe fallire.
Non puntare questo strumento a nessun host che non possiedi o per cui non hai autorizzazione scritta al test.
wp-admin della finestra temporale rilevante come non affidabili.class-ultimatemember.php (Trac)Solo per uso di ricerca e didattico. Non eseguire, distribuire o usare questo materiale contro alcun host senza il permesso scritto esplicito sia della parte che ospita questo repository sia del proprietario dei sistemi target.
Abraxas Labs · abraxaslabs.tech · github.com/abraxas · @abraxas_null
wp-login.php