Friend
Professional
- Messages
- 2,653
- Reaction score
- 850
- Points
- 113
XSS (Cross Site Scripting) — тип атаки, заключающийся во внедрении в выдаваемую веб-приложением страницу вредоносного кода, который будет выполнен на стороне пользователя при открытии им этой страницы. Являясь одним из наиболее популярных нарушением безопасности веб-приложений, атаки с использованием XSS вектора позволяют внедрять на страницу произвольное содержимое, перехватывать cookie и сессии других пользователей, получать доступ в закрытые раздела сайта и даже привелегии администратора веб-ресурса
Существует несколько видов XSS:
Возможности:
Работа с инструментом
Скачать 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 — инструмент довольно мощный и многофункциональный. Радует возможность модифицировать заголовки не только в параметрах, но и с использованием текстового редактора, а также добавлять собственный набор полезной нагрузки.
Существует несколько видов XSS:
- Хранимые — вредоносный код сохраняется на сервере и загружается с него каждый раз, когда пользователи запрашивают отображение той или иной страницы;
- Отображаемые — вредоносная строка является частью запроса жертвы к веб-сайту. Сайт принимает и вставляет эту вредоносную строку в отправляемый ответ обратно пользователю;
- XSS в DOM-модели — представляет собой вариант как хранимой, так и отображаемой XSS-атаки. В этой XSS-атаке вредоносная строка не обрабатывается браузером жертвы, пока настоящий JavaScript веб-сайта не выполнится.
Возможности:
- Мощный двигатель фаззинга;
- Технология взлома контекста;
- Интеллектуальная генерация пэйлоадов;
- Поддержка метода 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 — инструмент довольно мощный и многофункциональный. Радует возможность модифицировать заголовки не только в параметрах, но и с использованием текстового редактора, а также добавлять собственный набор полезной нагрузки.