
Привет, Хабр! Меня зовут Игорь Сак-Саковский, и я уже семь лет занимаюсь безопасностью веб-приложений в команде PT SWARM в компании Positive Technologies. В этой статье расскажу о моем недавнем исследовании, которое вошло в топ-10 методов веб-хакинга 2021 года по версии PortSwigger.
При общении в сети мы постоянно используем смайлики и выделяем текст в сообщениях. В Телеграме, Википедии, на GitHub и форумах это реализовано при помощи BBCode, MediaWiki и других языков разметки, использующих парсеры. Парсеры находят в сообщениях специальный код, тег или символ и преобразуют его в красивый текст с помощью HTML. А как известно, везде, где есть HTML, могут быть и XSS-атаки.
Я поделюсь методикой поиска проблем очистки передаваемых пользователями данных, которые могут привести к XSS-уязвимостям, покажу, как фаззить и находить проблемы при генерации HTML в сообщениях, а также проблемы парсеров, возникающие при их накладывании. Этот метод позволяет обнаруживать в популярных продуктах множество уязвимостей, которых раньше никто не замечал.
В статье вас ждет:
Вводная теория о том, что такое XSS и чем он опасен.
Советы, как искать XSS при отправке красивых сообщений.
Способы тестирования сообщений: перечислю уже известные техники, а еще поделюсь свежей идеей.
Список уязвимостей, которые я обнаружил в продуктах известных вендоров в процессе исследований, и чем они грозили.
Способы защиты приложений при разработке и как, по моему мнению, следует правильно защищаться: объясню наглядно, почему способ, которым пользуется большинство, — неверный.
Для прокачанных белых хакеров или тех, кому лень читать статью целиком, привел названия вендоров, описание обнаруженных мною уязвимостей (не всех, а лишь тех, которые исправили) и их импакт.

Ниже текст сообщений, который приводил к уязвимостям.

Если с первого взгляда вам это кажется кашей, не пугайтесь — к концу статьи станет понятнее
