Плагин Mail Mint — Email Marketing, Newsletter, Email Automation и WooCommerce Emails для WordPress уязвим к SQL-инъекциям через параметр «статус» во всех версиях до 1.31.0 включительно из-за недостаточного экранирования заданного пользователем параметра и отсутствия достаточной подготовки существующего SQL-запроса. Вызов $wpdb->prepare() не защищает от такого внедрения, поскольку контролируемый злоумышленником фрагмент $contact_filter_query объединяется со строкой формата SQL перед выполнением методаprepare() — методprepare() обрабатывает только заполнители %s/%d и не может очистить содержимое, уже встроенное в строку формата. Тела JSON REST API анализируются из php://input и обходят WordPress wp_magic_quotes(), что означает, что символы двойных кавычек в значениях массива статуса достигают приемника SQL без экранирования.
Это позволяет злоумышленникам, прошедшим проверку подлинности, с доступом на уровне администратора и выше, добавлять дополнительные SQL-запросы к уже существующим запросам, которые можно использовать для извлечения конфиденциальной информации из базы данных. Требуемая возможность mint_read_contacts — это возможность, специфичная для плагина, не назначенная какой-либо роли WordPress по умолчанию; она должна быть явно предоставлена администратором, что фактически делает эту уязвимость Администратор+.
Показать оригинальное описание (EN)
The Mail Mint – Email Marketing, Newsletter, Email Automation & WooCommerce Emails plugin for WordPress is vulnerable to SQL Injection via the 'status' parameter in all versions up to, and including, 1.31.0 due to insufficient escaping on the user supplied parameter and lack of sufficient preparation on the existing SQL query. The $wpdb->prepare() call does not protect against this injection because the attacker-controlled $contact_filter_query fragment is concatenated into the SQL format string before prepare() executes — prepare() only processes %s/%d placeholders and cannot sanitize content already embedded in the format string. REST API JSON bodies are parsed from php://input and bypass WordPress's wp_magic_quotes(), meaning double-quote characters in status array values reach the SQL sink unescaped. This makes it possible for authenticated attackers, with administrator-level access and above, to append additional SQL queries into already existing queries that can be used to extract sensitive information from the database. The required 'mint_read_contacts' capability is a plugin-specific capability not assigned to any default WordPress role; it must be explicitly granted by an administrator, making this effectively an Administrator+ vulnerability.
Характеристики атаки
Последствия
Строка CVSS v3.1