#3 Исследование Reflected XSS — Средний уровень.
Продолжаем рассматривать уязвимость Reflected XSS, и попробуем произвести запуск кода на средних настройках безопасности. Напомню, код будет представлять из себя скрипт, написанный на языке JavaScript.
Он выглядит как: «<script>alert(„Reflected XSS“)</script>».
Прежде, чем пытаться эксплуатировать эту уязвимость на средних настройках, я покажу Вам, как выглядит код веб-сайта, в частности этой страницы.
Повторим шаги, которые мы уже проделывали, и пропишем в поле ввода скрипт: «<script>alert(„Reflected XSS“)</script>», нажав кнопку «Submit»:
Получаем вывод всплывающего окна.
Жмем кнопку «Ok» и наводим курсор мыши на слово «Hello». Жмем правой кнопкой мыши и выбираем опцию «Inspect Element (Q)»:
Мы увидим исходный код этой страницы. Если мы внимательно посмотрим данный код, в частности откроем выделенные теги «<pre></pre>», то увидим слово «Hello», а уже после него внедренный нами код JavaScript:
Он без проблем исполняется на странице.
Продолжим наше исследование, и поднимем настройки безопасности на средний уровень:
Перейдем на вкладку «XSS Reflected», и повторим предыдущие шаги, внедрив скрипт в поле ввода:
Как Вы можете видеть, данный скрипт не работает. Если вспомним низкий уровень безопасности, то вывод был только с одним словом «Hello», а в данном случае выводится запись «Hello alert(„Reflected XSS“)».
Давайте посмотрим на код, с помощью инспектора элементов:
Мы видим, что начало скрипта и его конец не получилось внедрить. Отсутствуют теги: «<script></script>». Они были просто отфильтрованы, поэтому ничего не получилось.
Есть множество способов обхода таких фильтров и других способов защиты от XSS.
Давайте начнем с чего-нибудь простого, так как я предполагаю, что фильтр ищет слово «script», при обработке запроса. Можно, в принципе использовать тот же скрипт, и Вы ощутите аналогию с SQL-инъекциями. В коде скрипта мы будем делать некоторые буквы заглавными. Вид будет, например таким: «<scRipT>alert(„Reflected XSS“)</scripT>». Вставляем его в поле ввода и жмем кнопку «Submit»:
Все работает, и мы успешно обошли фильтр, который используется на этом веб-сайте.
Некоторые сайты, к примеру, ищут кавычки, и удаляют их все из записи. Мы еще поговорим об этом.
Есть множество различных вариаций обхода фильтров и защит. Некоторые примеры можно посмотреть в Owasp-10 cheat sheet. Загуглите 🙂
Можно делать инъекцию в теге «a», можно добавить какое-либо событие. Примеров, на самом деле, великое множество.
#1 Что такое уязвимость XSS (Cross Site Scripting)? Типы XSS.