XSS (Cross Site Scripting) — тип атаки, заключающийся во внедрении в выдаваемую веб-приложением страницу вредоносного кода, который будет выполнен на стороне пользователя при открытии им этой страницы. Являясь одним из наиболее популярных нарушением безопасности веб-приложений, атаки с использованием XSS вектора позволяют внедрять на страницу произвольное содержимое, перехватывать cookie и сессии других пользователей, получать доступ в закрытые раздела сайта и даже привелегии администратора веб-ресурса
Существует несколько видов XSS:
- Хранимые — вредоносный код сохраняется на сервере и загружается с него каждый раз, когда пользователи запрашивают отображение той или иной страницы;
- Отображаемые — вредоносная строка является частью запроса жертвы к веб-сайту. Сайт принимает и вставляет эту вредоносную строку в отправляемый ответ обратно пользователю;
- XSS в DOM-модели — представляет собой вариант как хранимой, так и отображаемой XSS-атаки. В этой XSS-атаке вредоносная строка не обрабатывается браузером жертвы, пока настоящий JavaScript веб-сайта не выполнится.
XSStrike — это пакет обнаружения XSS-уязвимостей, оснащенный четырьмя рукописными синтаксическими анализаторами, интеллектуальным генератором полезной нагрузки, мощным механизмом фаззинга и быстрым сканером. Он распознаёт ответ с помощью нескольких анализаторов, и затем обрабатывает полезные данные, которые гарантированно будут работать с помощью контекстного анализа, интегрированного в механизм фаззинга.
Возможности:
- Мощный двигатель фаззинга;
- Технология взлома контекста;
- Интеллектуальная генерация пэйлоадов;
- Поддержка метода GET & POST;
- Поддержка файлов cookie;
- Обнаружение WAF;
- Пэйлоады ручной работы для фильтрации и WAF-уклонения;
- Скрытое обнаружение параметров.
Информация предоставлена исключительно в ознакомительных целях. Не нарушайте законодательство!
Работа с инструментом
Скачать XSStrike можно по ссылке. Установка довольно проста — для начала распаковываем архив в нужную директорию и устанавливаем зависимости:
pip3 install -r requirements.txt
(обязательно pip3)
Запускаем:
# python3 XSStrike.py
Основные команды при работе с XSStrike:
Для GET-запросов:
# python3 xsstrike.py -u "http://192.168.61.210/xss_get.php?login=of&password1=asd&submit=Query"
Команда позволяет проверить пейлоады на странице с использованием GET-метода, после чего можно увидеть список автоматически сгенерированной полезной нагрузки.
# python3 xsstrike.py -u "http://192.168.61.210/xss2.php" --data "login=&password=&submit"
Параметр --data
позволяет работать с POST-запросами.
Параметр --skip
позволяет пропустить вопрос о применении того или иного пейлоада, а параметр --params
производит поиск потенциально уязвимых параметров. Опцию можно использовать в том числе для конкретной страницы (ограничить применение в рамках определенного пути), иначе перечисление будет выполнено для всех страниц, на которых была обнаружена XSS
.
Параметр --skip-dom
позволяет пропустить сканирование на уязвимости DOM
-объектов. DOM-объекты — это независящие от платформы и языка программные интерфейсы, позволяющие программам и скриптам получить доступ к содержимому HTML / XHTML / XML-документов, а также изменять содержимое, структуру и оформление таких документов.
Параметр --fuzzer
позволяет запустить фаззинг параметров указанных в URL
.
Параметр --crawl
сканирует все доступные страницы сайта и показывает те, которые подвержены XSS
.
Для передачи каких-либо заголовков во время запроса можно с использованием ключа --headers
. Указав ключ без параметров, сначала откроется текстовый редактор для модификации собственных заголовков запроса: например, User-Agent
или cookie
(передача cookie в данном параметре — единственная возможность просканировать закрытую авторизацией часть веб-приложения). После сохранения изменения процесс сканирования продолжится с учетом внесенных правок. Кроме этого можно указать нужные заголовки в виде отдельных параметров, например: --headers "User-Agent: Pentestit"
.
Параметр --proxy
включает или отключает использования прокси-сервера. Изменить адрес прокси-сервера можно в файле core/config.py
.
В этом файле можно изменять все основные функции инструмента, от стандартного редактора для заголовков запроса, до всевозможных наборов пейлоадов.
Полезную нагрузку можно закодировать, используя параметр -e
. На текущий момент поддерживается только кодирование пейлоадов в base64
, при этом конечное веб-приложение также должно поддерживать эту функцию.
Обход WAF
Поскольку в возможностях указан обход WAF, мы решили протестировать и эту функцию на Nemesida WAF Free, который в стандартной конфигурации заблокировал все попытки выполнить эксплуатацию XSS-уязвимостей.
Заключение
Можно сказать, что XSStrike — инструмент довольно мощный и многофункциональный. Радует возможность модифицировать заголовки не только в параметрах, но и с использованием текстового редактора, а также добавлять собственный набор полезной нагрузки.