YesWiki — это вики-система, написанная на PHP. До версии 4.6.6 обработчик виджетов YesWiki Bazar отображал параметр GET id в атрибутах HTML, используя только Strip_tags(). Поскольку функция Strip_tags() не экранирует двойные кавычки, злоумышленник может выйти за пределы значения атрибута, внедрить обработчик событий, например onmouseover, и выполнить произвольный код JavaScript в браузере жертвы.
Эта проблема решается без аутентификации. Во время проверки уязвимый маршрут виджета вернул внедренный HTML как для /HomePage/widget?id=..., так и для /NoSuchPage/widget?id=..., что показывает, что не требуется ни вход в систему, ни владение страницей, ни права редактирования, ни даже действительный тег страницы. Единственным обязательным условием маршрутизации было то, что расширение Bazar включено и запрос включает параметр id.
Эта проблема исправлена в версии 4.6.6.
Показать оригинальное описание (EN)
YesWiki is a wiki system written in PHP. Prior to version 4.6.6, YesWiki's Bazar widget handler reflects the id GET parameter into HTML attributes using strip_tags() only. Because strip_tags() does not escape double quotes, an attacker can break out of the attribute value, inject an event handler such as onmouseover, and execute arbitrary JavaScript in the victim's browser. This issue is reachable without authentication. During validation, the vulnerable widget route returned the injected HTML for both /HomePage/widget?id=... and /NoSuchPage/widget?id=..., which shows that no login, no page ownership, no edit rights, and not even a valid page tag were required. The only routing prerequisite observed was that the Bazar extension is enabled and the request includes an id parameter. This issue has been patched in version 4.6.6.
Характеристики атаки
Последствия
Строка CVSS v3.1