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-метода, после чего можно увидеть список автоматически сгенерированной полезной нагрузки.

GET

# python3 xsstrike.py -u "http://192.168.61.210/xss2.php" --data "login=&password=&submit"

Параметр --data позволяет работать с POST-запросами.

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 — инструмент довольно мощный и многофункциональный. Радует возможность модифицировать заголовки не только в параметрах, но и с использованием текстового редактора, а также добавлять собственный набор полезной нагрузки.