
SMS & OTP para WooCommerce, Notificaciones de Pedidos y Recuperación de Carrito Abandonado, plugin para WordPress; SMS Alert <3.9.6; Escalada de Privilegios No Autenticada (Restablecimiento Forzado de Contraseña)

SMS Alert ≤ 3.9.5 - escalada de privilegios no autenticada mediante restablecimiento de contraseña arbitrario
Una vulnerabilidad crítica de autenticación incorrecta en el plugin de WordPress SMS Alert - SMS & OTP for WooCommerce, Order Notifications & Abandoned Cart Recovery. Cuando la verificación por OTP está habilitada para el restablecimiento de contraseñas, un atacante no autenticado puede establecer una nueva contraseña para un usuario que tenga un número de teléfono registrado —incluidos los administradores— sin demostrar la posesión de dicho teléfono.
| CVE | CVE-2026-11387 |
| CWE | CWE-287: Autenticación incorrecta |
| CVSS 3.1 | 9.8 Crítica (AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H) |
| Fabricante | Cozy Vision Technologies Pvt. Ltd. |
| Producto | SMS Alert (sms-alert) |
| Afectados | Todas las versiones hasta la 3.9.5 |
| Parcheado | 3.9.6 (27 de junio de 2026) |
| CNA | Wordfence |
Este repositorio contiene una prueba de concepto de Abraxas Labs para pruebas autorizadas únicamente: divulgación al fabricante, reproducción en laboratorio o un host para el que se tenga permiso por escrito de evaluación.
SMS Alert engancha el flujo de contraseña perdida de WooCommerce / WordPress de modo que un código de un solo uso enviado por SMS debería condicionar la nueva contraseña. En las versiones afectadas, el manejador detrás de option=smsalert-change-password-form aplica smsalert_user_newpwd sin comprobar que el solicitante haya completado la verificación por OTP o que sea el propietario de la cuenta.
El registro oficial del CVE también señala que la misma falta de comprobación de identidad puede utilizarse para cambiar la dirección de correo electrónico de la víctima y luego tomar el control de la cuenta mediante un restablecimiento normal. Cualquiera de las dos vías constituye una toma de control de cuenta no autenticada.
Los sitios solo están expuestos cuando ambas condiciones son verdaderas:
billing_phone).En esas condiciones, el impacto es el compromiso total de la cuenta elegida. La toma de control de un administrador supone el compromiso total del sitio.
| Condición | Resultado |
|---|---|
| Acceso de red no autenticado | No se requieren credenciales de WordPress |
| El objetivo es un comprador / suscriptor | Toma de control de la cuenta de ese cliente |
| El objetivo es un administrador | Escalada de privilegios a wp-admin, instalación de plugins/temas, malware persistente |
La confidencialidad, la integridad y la disponibilidad son todas altas: el atacante puede leer pedidos y datos personales, cambiar el contenido y los usuarios del sitio, y dejar fuera al propietario legítimo.
El restablecimiento de contraseña con SMS Alert se parece aproximadamente a esto:
lost-password request → OTP to the user’s phone → verified change-password POST
El paso roto es el último. El plugin enruta según $_REQUEST['option'] == 'smsalert-change-password-form' (véase class-wpresetpassword.php en la 3.9.5) y luego escribe la contraseña enviada. No vincula ese POST a una sesión OTP previa, un nonce o una comprobación de capacidad que demostraría que el solicitante es el usuario nombrado en el restablecimiento.
Esta prueba de concepto se mantiene en ese manejador:
POST a WooCommerce /my-account/lost-password/ y /wp-login.php?action=lostpassword con wc_reset_password establecido, de modo que se entra en la ruta de restablecimiento del plugin para el nombre de usuario de la víctima.POST option=smsalert-change-password-form más smsalert_user_newpwd / smsalert_user_cnfpwd a /, /my-account/lost-password/ y la acción lost-password de wp-login. Una cabecera Location que contenga password-reset=true se trata como éxito.wp-login.php con la nueva contraseña para que una ejecución en laboratorio pueda distinguir una toma de control real de un fallo (opción OTP desactivada, o sin teléfono en el usuario).No se envía ningún OTP. Ese es el fallo.
CVE-2026-11387-WooCommerce-SMS-OTP-Abraxas-Labs.py es un pequeño cliente de Python 3: banner en color y luego los tres pasos anteriores. Solo se comunica con la URL que se le pasa en la línea de comandos.
requestsEn macOS con Homebrew Python (PEP 668), use un venv en lugar de un pip install del 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 tercer argumento establece la contraseña que se aplicará; el valor predeterminado es abr4x4s#L4b5.
Sin argumentos, el script imprime el banner y el uso, y luego sale con 1. Es una forma segura de confirmar que el cliente arranca.
El sitio WordPress objetivo debe ejecutar SMS Alert ≤ 3.9.5, con OTP activado en el restablecimiento, y el nombre de usuario de la víctima debe tener ya un número de teléfono para OTP. Contra un sitio parcheado 3.9.6+ o un usuario sin teléfono, se espera que la comprobación de inicio de sesión falle.
No apunte esto a ningún host que no posea o para el que no tenga autorización por escrito para probar.
wp-admin de la ventana relevante como no confiables.class-ultimatemember.php (Trac)Solo para uso educativo y de investigación. No ejecute, despliegue ni utilice este material contra ningún host a menos que tenga permiso explícito por escrito tanto de la parte que aloja este repositorio como del propietario de los sistemas objetivo.