Плагин Independent Analytics для WordPress уязвим к сохраненным межсайтовым сценариям через параметр отслеживания 404 not_found_url в версиях до 2.15.0 включительно. Это связано с тем, что функция get_cell_content() применяет urldecode() после esc_url() при рендеринге столбца URL для 404 записей — последовательность, которая позволяет HTML-коду с процентным кодированием проходить проверку URL-адреса, а затем реконструироваться как необработанная разметка, которую wp_kses_post() не удаляет, поскольку он сохраняет элементы img и атрибуты data-*, а также потому, что общедоступная конечная точка REST /iawp/search принимает неаутентифицированные запросы, пока они имеют подпись, которая сама встроена в HTML общедоступной страницы. Это позволяет неаутентифицированным злоумышленникам внедрять произвольные веб-скрипты на страницы, которые будут выполняться всякий раз, когда пользователь обращается к внедренной странице.
Показать оригинальное описание (EN)
The Independent Analytics plugin for WordPress is vulnerable to Stored Cross-Site Scripting via the 404 not_found_url tracking parameter in versions up to, and including, 2.15.0. This is due to the get_cell_content() function applying urldecode() after esc_url() when rendering the URL column for 404 entries — a sequence that allows percent-encoded HTML to pass URL validation and then be reconstructed as raw markup, which wp_kses_post() does not strip because it retains img elements and data-* attributes, and because the public REST endpoint /iawp/search accepts unauthenticated requests as long as they carry a signature that is itself embedded in public page HTML. This makes it possible for unauthenticated attackers to inject arbitrary web scripts in pages that will execute whenever a user accesses an injected page.
Характеристики атаки
Последствия
Строка CVSS v3.1