getLeadIdsByFieldValueAction (LeadBundle/Controller/AjaxController.php) Mautic считывает параметр поля из запроса, очищает его только с помощью InputHelper::clean() (который HTML-объект кодирует кавычки и угловые скобки, но не ограничивает другие символы) и передает его в LeadRepository::buildQueryForGetLeadsByFieldValue(), где он находится объединяется непосредственно как необработанный идентификатор столбца SQL ($col = 'l.'.$field), а не проверяется по белому списку реальных имен столбцов или передается как связанный параметр. Поскольку Doctrine не может параметризовать идентификаторы, а дезинфицирующее средство не блокирует пробелы, круглые скобки и другие символы, относящиеся к SQL, злоумышленник может внедрить SQL через само имя поля. Для действия требуется только действующий сеанс (любой аутентифицированный пользователь), в отличие от родственных действий в том же контроллере, которые выполняют дополнительные проверки разрешений.
Показать оригинальное описание (EN)
Mautic's getLeadIdsByFieldValueAction (LeadBundle/Controller/AjaxController.php) reads a field parameter from the request, sanitizes it only with InputHelper::clean (which HTML-entity-encodes quotes and angle brackets but does not restrict other characters), and passes it into LeadRepository::buildQueryForGetLeadsByFieldValue where it is concatenated directly as a raw SQL column identifier ( = 'l.'.) rather than being validated against a whitelist of real column names or passed as a bound parameter.
Характеристики атаки
Последствия
Строка CVSS v3.1