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

#6 Исследование уязвимости Stored XSS (Средний уровень).

Продолжим рассматривать уязвимость Stored XSS, и теперь рассмотрим средний уровень безопасности.

Предлагаю, для начала работы сбросить базу данных, чтобы очистить наши предыдущие действия. Переходим в веб-приложение «DVWA», на вкладку «Setup», жмем кнопку «Reset Database»:

Предлагаю, для начала работы сбросить базу данных, чтобы очистить наши предыдущие действия.

Получим вывод некоторых параметров:

Получим вывод некоторых параметров

И если мы перейдем на вкладку «XSS stored», то все записи будут удалены:

И если мы перейдем на вкладку «XSS stored», то все записи будут удалены

Собственно, этого мы и добивались. Также нам нужно изменить уровень безопасности на «Medium»:

Собственно, этого мы и добивались. Также нам нужно изменить уровень безопасности на «Medium»

И переходим на вкладку «XSS stored».

Обратите внимание на то, что на среднем уровне безопасности у нас нет возможности вставки кода в поле «Message». Наша задача будет заключаться в том, чтобы сделать инъекцию в поле «Name». Давайте экспериментировать, и сначала попробуем привычный нам уже код, попытавшись вставить его в поле «Name». Первая проблема, при вставке, заключается в том, что в данном поле существует ограничение на символы. Мы не сможем вставить полностью наш скрипт:

Наша задача будет заключаться в том, чтобы сделать инъекцию в поле «Name».

Это ограничение легко обойти. Жмем правой кнопкой мыши в поле «Name», и выбираем «Inspect Element». Попадаем на «Input», в котором меняем значение «maxlength» на 100 (для примера):

Жмем правой кнопкой мыши в поле «Name», и выбираем «Inspect Element». Попадаем на «Input», в котором меняем значение «maxlength» на 100 (для примера)

Вставляем наш скрипт (<script>alert(«Stored XSS»)</script>) в поле «Name» и добавляем запись «test», в поле «Message»:

Вставляем наш скрипт поле «Name» и добавляем запись «test», в поле «Message»

Жмем кнопку «Sign Guestbook», и ничего не происходит:

Жмем кнопку «Sign Guestbook», и ничего не происходит

Причина в фильтрации нашего скрипта, так как, исходя из гостевой записи, у нас отсутствуют теги «script». Нам нужно обойти данный фильтр. Мы уже делали это, и нам нужно прописать заглавные буквы в тегах скрипт. Запись будет иметь вид: <sCripT>alert(«Stored XSS»)</ScripT>.

Проделаем все шаги вновь, и получим результат:

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

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

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

Что мы можем предпринять в этом случае? Можно использовать функцию «String.fromCharCode», и внутри ее нужно сделать запись в виде кодировки символов («charcode»).

Чтобы провести конвертацию, нам понадобится калькулятор «charcode calculator». Поищем в интернете подходящий.

При переходе на сайт я введу название для преобразования: «Stored XSS 2»:

Чтобы провести конвертацию, нам понадобится калькулятор «charcode calculator».

Копируем сгенерированный код и вставляем его в скрипт, который будет выглядеть как: <sCripT>alert(String.fromCharCode(83, 116, 111, 114, 101, 100, 32, 88, 83, 83, 32, 50))</ScRIPT>.

Далее нам нужно просто запустить его. Я изменил некоторые буквы прописными в тегах «script», для обхода фильтрации.

Повторяем те же шаги, что и в предыдущем примере. Меняем длину на 100 символов в исходном коде, и вставляем скрипт в поле «Name», а простой текст, в поле «Message»:

Меняем длину на 100 символов в исходном коде, и вставляем скрипт в поле «Name», а простой текст, в поле «Message»

Мы видим первый вывод уязвимости XSS. Жмем кнопку «Ok» и получаем:

Мы видим первый вывод уязвимости XSS. Жмем кнопку «Ok» и получаем

Наш скрипт успешно работает, и мы видим вывод второго окна, с записью «Stored XSS 2».

На этом все. Всем хорошего дня.

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

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

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

#4 Исследование Reflected XSS — (Сложный уровень).

#5 Исследование уязвимости Stored XSS. (Уровень Low).