Разделы портала

Онлайн-тренинги

.
Автоматизированное тестирование на XSS
06.03.2019 00:00

Автор: Кристин Джеквони (Kristin Jackvony)
Оригинал статьи
Перевод:
Ольга Алифанова

Ранее мы обсуждали три способа тестирования на межсайтовый скриптинг. Мы разбирали примеры ручного тестирования XSS и говорили о том, как использовать код для создания XSS-атак. Сегодня мы рассмотрим третий способ тестирования – использование автоматизации. Для этого мы воспользуемся Burp Suite. Этот странно названный, но крайне полезный инструмент доступен бесплатно (есть и платная версия с дополнительной функциональностью). Мы также будем пользоваться Juice Shop и Postman.

Для начала давайте исследуем поле Juice Shop, которое мы будем тестировать. Используя Chrome, перейдите на главную страницу Juice Shop. В верхней части экрана вы увидите окно поиска. Откройте инструменты разработчика Chrome, нажав на многоточие в правом верхнем углу – затем нужно выбрать "Дополнительные инструменты" – "Инструменты разработчика". После того, как вы их открыли, кликните на вкладку "Сеть".


Запустите поиск по слову "apple" в поле поиска. На странице отобразятся результаты поиска, а в инструментах разработчика – сетевой запрос с именем "search?q=apple". Нажмите на него. Откроется окошко с полным URL запроса – он должен быть таким: https://juice-shop.herokuapp.com/rest/product/search?q=apple.

Теперь откройте Postman. Вставьте этот URL в строку URL в Postman и нажмите кнопку Send. Вы должны получить ответ 200 и увидеть результаты поиска. Теперь настроим Postman для использования через прокси. Нажмите на иконку гаечного ключа в верхней панели и выберите "Настройки". Кликните на вкладке Proxy, а затем включите Global Proxy. В первом поле Proxy Server введите 127.0.0.1 – свой локальный IP-адрес. Во втором поле введите 8080 – локальный порт. Теперь Postman настроен на отправку запросов в Burp Suite. Тут вам может понадобиться еще один шаг – выключение SSL-верификации. В окне Settings откройте вкладку General, и выключите настройку " SSL certificate verification".

После того, как вы скачали Burp Suite, запустите приложение и нажмите Next, а затем – Start Burp. Теперь Burp Suite готов к приему запросов. Снова вернитесь в Postman и нажмите Send в окне поискового запроса, отправленного ранее. Выглядеть все будет так, как будто ничего не произошло – это потому, что запрос ушел в Burp! Переключитесь на Burp, и вы увидите, что вкладка Proxy теперь оранжевого цвета. Кликните по ней, а затем по кнопке Forward. Теперь ваш запрос ушел в Postman, и если вы перейдете в Postman, то увидите результаты запроса. Неплохая идея – выключить Global Proxy в Postman после этого. Если вы забудете это сделать, то все ваши последующие запросы уйдут в Burp, а вы будете удивляться, что не получаете результатов.

Вернитесь в Burp и кликните по вкладке HTTP (это подвкладка вкладки Proxy – если вы ее не видите, убедитесь, что выбрана именно вкладка Proxy). Там вы должны увидеть ваш GET-запрос. Кликните по нему правой кнопкой и нажмите на "Send to intruder". Вкладка Intruder окрасится оранжевым.

Кликните по этой вкладке. На ней можно увидеть, что цель атаки уже указана как URL проекта Juice Shop. Теперь перейдем на подвкладку Positions – на ней мы выбираем, какие элементы запроса мы хотим заменить. Burp Suite верно догадался, что мы, скорее всего, планируем заменить значение поискового запроса "apple", поэтому оставим эту настройку как есть. Кликните на подвкладку Payloads. Попробуем нагрузить наш сервис межсайтовыми скриптами!

Введите набор XSS-атак в окно Payload Options, используя кнопку Add. Ниже приведены примеры:

<script>alert("XSS here!")</script>

<script/src=data:,alert()>

<IMG SRC=javascript:alert('XSS')>

<IMG SRC=JaVaScRiPt:alert('XSS')>

<a onmouseover="alert(document.cookie)">xxs link</a>

Больше примеров можно найти в списке XSS Filter Bypass List. Тут стоит отметить, что при подписке на платную версию Burp Suite полный список XSS-атак будет доступен для использования, и их не придется вводить вручную.

Начнем нашу атаку! Нажмите кнопку "Start Attack" в верхнем правом углу приложения. Вы получите предупреждение, что ваши запросы могут тормозиться, так как используется бесплатная версия. Просто кликните "ОК", и атака стартует. Появится всплывающее окно, и ваши атаки прогонятся одна за другой.

После того, как прогон завершен, можно оценить его результаты. Во всплывающем окне будет шесть запросов. Первый – под номером 0 – просто повторяет наш исходный запрос. Запросы 1-5 – это те запросы, которые мы добавили в окне Payload Options. Тут можно увидеть, что запросы 1, 2 и 5 получили ответ 200, а 3 и 4 – ответ 500. Значит, запросы 1, 2 и 5, скорее всего, прошли успешно! Попробуйте запустить их вручную, вставив нужные строки в поисковое поле Juice Shop.


Несколько замечаний:

  • Еще Burp Suite часто используется для перехвата запросов браузера напрямую, а не через Postman. Я выбрала Postman, потому что в нем очень легко настроить прокси.
  • Если вы настроили Burp Suite для перехвата запросов браузера, вы сможете воспроизвести ответы на ваши атаки напрямую в браузере и увидеть, как это выглядит на самой странице.
  • В платной версии Burp Suite есть инструмент Scanner, сканирующий запрос на ряд уязвимостей, включая XSS.