
Prueba de concepto en Python para CVE-2026-93300, una inyección SQL no autenticada en el plugin de WordPress EventON Subscriber; identifica el manejador AJAX y extrae datos de la base de datos mediante oráculos basados en tiempo.
Prueba de concepto en Python para CVE-2026-93300: inyección SQL no autenticada a través del parámetro email en el plugin de WordPress EventON - Subscriber (Wordfence, CVSS 7.5 Alta).
| CVE | CVE-2026-93300 |
| Plugin | EventON - Subscriber (eventon-subscriber) |
| Afectados | todas las versiones ≤ 1.4.5 |
| Versión corregida | ninguna publicada (a fecha de 2026-10) |
| Vector | POST /wp-admin/admin-ajax.php, action=evosub_new_subscriber, parámetro email |
| Autenticación | ninguna (no autenticada) |
| CWE | CWE-89 Inyección SQL |
El manejador AJAX del formulario de suscripción (evosub_new_subscriber, registrado con wp_ajax_nopriv_, accesible desde el formulario público del front-end en assets/evosub_script.js) construye una consulta SQL existente utilizando el valor email proporcionado por el usuario sin $wpdb->prepare() / escape adecuado. El valor llega a la consulta sin escapar, por lo que un atacante puede salir del literal de cadena y añadir/modificar la consulta para leer datos arbitrarios de la base de datos.
La expresión regular de email del lado del cliente en evosub_script.js es la única comprobación de formato en el navegador; no proporciona ninguna protección del lado del servidor.
# 1. Detect only (fingerprint handler, find working injection oracle)
python3 cve_2026_93300.py --url https://target.example --mode check
# 2. Dump wp_users (login / email / password hash)
python3 cve_2026_93300.py --url https://target.example --mode users --prefix wp_
# 3. Extract any scalar query result
python3 cve_2026_93300.py --url https://target.example --mode sql \
--sql "SELECT option_value FROM wp_options WHERE option_name='admin_email'"
| Opción | Predeterminado | Descripción |
|---|---|---|
--mode | check | check / users / sql |
--action | evosub_new_subscriber | acción AJAX a probar |
--param | email | parámetro inyectado |
--prefix | wp_ | prefijo de tablas de WordPress |
--sql | — | SELECT escalar para --mode sql |
--delay | 2.0 | segundos de SLEEP() para el oráculo basado en tiempo |
--timeout | 25 | tiempo de espera HTTP |
--max-id | 15 | ID de usuario más alto a escanear |
--proxy / --insecure / --ua | — | proxy HTTP / omitir verificación TLS / UA personalizado |
action=evosub_new_subscriber con una acción no registrada (0 / HTTP 400) para confirmar que el manejador está presente y activo.', ", \) → si los errores SQL se reflejan (WP_DEBUG), se usa un oráculo basado en errores (el más rápido, una sola petición por bit);SLEEP() → oráculo union-time (una evaluación por sonda, sin ralentización por fila);;SELECT SLEEP(...)) → oráculo stacked-time si el driver permite múltiples sentencias;OR/AND/paren/concat SLEEP) → oráculo template-time como alternativa.1=1 → verdadero y 1=0 → falso (repetidamente) antes de que comience la extracción, lo que filtra los falsos positivos de objetivos lentos/inestables.LENGTH() y ASCII(SUBSTRING(...)) (7 peticiones por carácter).--mode check finaliza con una extracción de comprobación de user_login@USER() para demostrar el acceso a los datos.
poc*@example.invalid en el tipo de contenido evo-subscriber; son visibles en Events → All Subscribers y se pueden enviar a la papelera.email del lado del servidor con un filtro estricto, todas las sondas se comportan de forma idéntica y la herramienta informa no vulnerable / entrada validada.admin-ajax.php roto (error fatal en la línea base) se informan como no saludables y se abortan.SELECT (contexto INSERT/UPDATE) se detectan pero pueden no tener un oráculo de tiempo funcional.--delay ≥ 1.0 en objetivos reales; los retardos muy pequeños producen falsos negativos en enlaces de alta latencia.email (y toda entrada de la petición) con $wpdb->prepare() / esc_sql(); valide con is_email() del lado del servidor.admin-ajax.php cuyo valor de email contenga metacaracteres SQL (', ", \, --, ;, UNION).Solo para pruebas de seguridad autorizadas y fines educativos. El acceso no autorizado a sistemas informáticos es ilegal. Usted es responsable de cumplir con todas las leyes aplicables.