#2 Исследование Reflected XSS (уровень Low).
Давайте начнем исследовать XSS уязвимости. Суть метода сводится к тому, чтобы просмотреть целевой веб-сайт, и попытаться провести инъекцию в любое текстовое поле или в url (позже Вы поймете, о чем я говорю). Сразу вспоминается аналогия с SQL-инъекциями.
Итак, рассмотрим пример Reflected XSS или Отраженного XSS. Эта уязвимость не постоянна и не хранима, при которой код отправляется непосредственно нашей цели. Итогом этой атаки будет запуск кода на машине жертвы.
Для наглядной демонстрации уязвимости, мне понадобится веб-приложение «DVWA». Выставлю настройки безопасности на «low»:
Перейду на вкладку «XSS reflected»:
Видим страничку с полем ввода имени. Можем попробовать ввести какое-либо имя:
После ввода, как видим, происходит обработка нашего запроса и вывод на странице.
Суть этой страницы состоит в том, что мы можем проводить инъекции через текстовые поля. Также, посмотрев на URL страницы, Вы можете заметить, что данные передаются методом GET, т. е. в открытом виде:
И это прекрасно, так как мы можем проводить инъекции через URL.
Теперь попробуем провести инъекцию в текстовом поле, написав скрипт на языке программирования JavaScript. Он очень прост, и является наглядным примером. Это простейший вариант вставки скрипта, так как существуют другие, более изощренные обходы фильтрации. Конструкция скрипта будет состоять из открывающего и закрывающего тега: <script></script>, функции alert(), которая вызывает всплывающее окно. Внутри функции можно прописать любое слово, обрамив его двойными кавычками («»). В данном примере я пропишу слово «Reflected XSS». Конечная запись будет иметь вид: «<script>alert(«Reflected XSS»)</script>». Вставим написанный код в поле на странице и жмем кнопку «Submit»:
Как видим, на странице присутствует уязвимость XSS, и об этом нам говорит всплывающее окно.
Такие же манипуляции мы можем проводить с записью в URL. Не будем далеко ходить, а прямо из нашего примера скопируем строку URL.
Она будет иметь вид: «http://10.0.2.7/dvwa/vulnerabilities/xss_r/?name=%3Cscript%3Ealert%28%27Reflected+XSS%27%29%3C%2Fscript%3E#». Можно заметить, что некоторые символы были преобразованы, но это не важно, так как эту ссылку мы можем отправить нашей цели, и она сработает.
Иными словами, мы можем делать инъекцию в URL. Продемонстрирую Вам работу этой инъекции. Это просто реализуется, и я ввожу код непосредственно в строку URL:
Код выглядит как «<script>alert(«Reflected XSS»)</script>». Как я уже говорил, мы можем скопировать этот URL, и отправить нашей цели. Перейдя по ссылке, код будет выполнен, что означает успешную реализацию атаки.
А так, на этом все. Всем хорошего дня!
#1 Что такое уязвимость XSS (Cross Site Scripting)? Типы XSS.