#3 Исследование Reflected XSS — Средний уровень.
Продолжаем рассматривать уязвимость Reflected XSS, и попробуем произвести запуск кода на средних настройках безопасности. Напомню, код будет представлять из себя скрипт, написанный на языке JavaScript.
Он выглядит как: «<script>alert(„Reflected XSS“)</script>».
Прежде, чем пытаться эксплуатировать эту уязвимость на средних настройках, я покажу Вам, как выглядит код веб-сайта, в частности этой страницы.
Повторим шаги, которые мы уже проделывали, и пропишем в поле ввода скрипт: «<script>alert(„Reflected XSS“)</script>», нажав кнопку «Submit»:
![alert(„Reflected XSS“)](https://timcore.ru/wp-content/uploads/2021/06/001-2-1024x828.png)
Получаем вывод всплывающего окна.
Жмем кнопку «Ok» и наводим курсор мыши на слово «Hello». Жмем правой кнопкой мыши и выбираем опцию «Inspect Element (Q)»:
![Жмем кнопку «Ok» и наводим курсор мыши на слово «Hello». Жмем правой кнопкой мыши и выбираем опцию «Inspect Element (Q)»](https://timcore.ru/wp-content/uploads/2021/06/002-2-1024x823.png)
Мы увидим исходный код этой страницы. Если мы внимательно посмотрим данный код, в частности откроем выделенные теги «<pre></pre>», то увидим слово «Hello», а уже после него внедренный нами код JavaScript:
![Мы увидим исходный код этой страницы.](https://timcore.ru/wp-content/uploads/2021/06/003-1.png)
Он без проблем исполняется на странице.
Продолжим наше исследование, и поднимем настройки безопасности на средний уровень:
![Продолжим наше исследование, и поднимем настройки безопасности на средний уровень](https://timcore.ru/wp-content/uploads/2021/06/004-1-1024x825.png)
Перейдем на вкладку «XSS Reflected», и повторим предыдущие шаги, внедрив скрипт в поле ввода:
![Перейдем на вкладку «XSS Reflected», и повторим предыдущие шаги, внедрив скрипт в поле ввода](https://timcore.ru/wp-content/uploads/2021/06/005-1-1024x822.png)
Как Вы можете видеть, данный скрипт не работает. Если вспомним низкий уровень безопасности, то вывод был только с одним словом «Hello», а в данном случае выводится запись «Hello alert(„Reflected XSS“)».
Давайте посмотрим на код, с помощью инспектора элементов:
![Давайте посмотрим на код, с помощью инспектора элементов](https://timcore.ru/wp-content/uploads/2021/06/006-1-1024x819.png)
Мы видим, что начало скрипта и его конец не получилось внедрить. Отсутствуют теги: «<script></script>». Они были просто отфильтрованы, поэтому ничего не получилось.
Есть множество способов обхода таких фильтров и других способов защиты от XSS.
Давайте начнем с чего-нибудь простого, так как я предполагаю, что фильтр ищет слово «script», при обработке запроса. Можно, в принципе использовать тот же скрипт, и Вы ощутите аналогию с SQL-инъекциями. В коде скрипта мы будем делать некоторые буквы заглавными. Вид будет, например таким: «<scRipT>alert(„Reflected XSS“)</scripT>». Вставляем его в поле ввода и жмем кнопку «Submit»:
![Вставляем скрипт в поле ввода, и жмем кнопку "Submit"](https://timcore.ru/wp-content/uploads/2021/06/007.png)
Все работает, и мы успешно обошли фильтр, который используется на этом веб-сайте.
Некоторые сайты, к примеру, ищут кавычки, и удаляют их все из записи. Мы еще поговорим об этом.
Есть множество различных вариаций обхода фильтров и защит. Некоторые примеры можно посмотреть в Owasp-10 cheat sheet. Загуглите 🙂
Можно делать инъекцию в теге «a», можно добавить какое-либо событие. Примеров, на самом деле, великое множество.
#1 Что такое уязвимость XSS (Cross Site Scripting)? Типы XSS.