XSS, XSS Reflected, Уязвимости

#3 Исследование Reflected XSS — Средний уровень.

Продолжаем рассматривать уязвимость Reflected XSS, и попробуем произвести запуск кода на средних настройках безопасности. Напомню, код будет представлять из себя скрипт, написанный на языке JavaScript.

Он выглядит как: «<script>alert(„Reflected XSS“)</script>».

Прежде, чем пытаться эксплуатировать эту уязвимость на средних настройках, я покажу Вам, как выглядит код веб-сайта, в частности этой страницы.

Повторим шаги, которые мы уже проделывали, и пропишем в поле ввода скрипт: «<script>alert(„Reflected XSS“)</script>», нажав кнопку «Submit»:

alert(„Reflected XSS“)

Получаем вывод всплывающего окна.

Жмем кнопку «Ok» и наводим курсор мыши на слово «Hello». Жмем правой кнопкой мыши и выбираем опцию «Inspect Element (Q)»:

Жмем кнопку «Ok» и наводим курсор мыши на слово «Hello». Жмем правой кнопкой мыши и выбираем опцию «Inspect Element (Q)»

Мы увидим исходный код этой страницы. Если мы внимательно посмотрим данный код, в частности откроем выделенные теги «<pre></pre>», то увидим слово «Hello», а уже после него внедренный нами код JavaScript:

Мы увидим исходный код этой страницы.

Он без проблем исполняется на странице.

Продолжим наше исследование, и поднимем настройки безопасности на средний уровень:

Продолжим наше исследование, и поднимем настройки безопасности на средний уровень

Перейдем на вкладку «XSS Reflected», и повторим предыдущие шаги, внедрив скрипт в поле ввода:

Перейдем на вкладку «XSS Reflected», и повторим предыдущие шаги, внедрив скрипт в поле ввода

Как Вы можете видеть, данный скрипт не работает. Если вспомним низкий уровень безопасности, то вывод был только с одним словом «Hello», а в данном случае выводится запись «Hello alert(„Reflected XSS“)».

Давайте посмотрим на код, с помощью инспектора элементов:

Давайте посмотрим на код, с помощью инспектора элементов

Мы видим, что начало скрипта и его конец не получилось внедрить. Отсутствуют теги: «<script></script>». Они были просто отфильтрованы, поэтому ничего не получилось.

Есть множество способов обхода таких фильтров и других способов защиты от XSS.

Давайте начнем с чего-нибудь простого, так как я предполагаю, что фильтр ищет слово «script», при обработке запроса. Можно, в принципе использовать тот же скрипт, и Вы ощутите аналогию с SQL-инъекциями. В коде скрипта мы будем делать некоторые буквы заглавными. Вид будет, например таким: «<scRipT>alert(„Reflected XSS“)</scripT>». Вставляем его в поле ввода и жмем кнопку «Submit»:

Вставляем скрипт в поле ввода, и жмем кнопку "Submit"

Все работает, и мы успешно обошли фильтр, который используется на этом веб-сайте.

Некоторые сайты, к примеру, ищут кавычки, и удаляют их все из записи. Мы еще поговорим об этом.

Есть множество различных вариаций обхода фильтров и защит. Некоторые примеры можно посмотреть в Owasp-10 cheat sheet. Загуглите 🙂

Можно делать инъекцию в теге «a», можно добавить какое-либо событие. Примеров, на самом деле, великое множество.

#1 Что такое уязвимость XSS (Cross Site Scripting)? Типы XSS.

#2 Исследование Reflected XSS (уровень Low).