Привет! Вторая статья из цикла тестирования безопасности web-приложений. В прошлой заметке рассказывал как развернуть тестовое приложение bWAPP. Для проведения аудита безопасности (далее — пентест) буду использовать Burp Suite.  Это интегрированная платформа включающая в себя большой набор утилит для тестирования web-приложений. Позволяет не только в ручном, но и в автоматическом режиме проводить как позитивное, так и негативное тестирование приложений. Инструмент написан на Java. С ним можно работать на Windows, Linux или Mac. В Kali Linux она уже предустановлена. Конечно же в рамках одной статьи сложно рассказать о всех возможностях Burp Suite, не говоря уже о многочисленных полезных плагинах расширяющих функционал практически до безграничного полёта фантазии исследовательского пентеста. По этому на примере отправки данных с моей формы feedback’a посмотрим как работать с основными компонентами Burp —  repeater и intruder.

Как писал выше Burp Suite является кроссплатформенной. Тестовое окружение: ОС Windows 10 и Burp Suite Professional v.2020.9.1. Вообще данное ПО поставляется в официальных трёх сборках (редакциях) — Community (бесплатная, базовая),  Professional и Enterprise. Последняя отличается от профессиональной наличием возможности подружить её с CI (системой непрерывной интеграции типа Jenkins). Со скачиванием и установкой базовой редакции community проблем быть не должно.

Подробно не останавливаюсь. Burp — выступает в роли proxy. Последнее нам нужно настроить в зависимости от того в каком браузере планируется работать.

 Mozilla Firefox. 

Запускаем Burp Suite. Переходим во вкладку Proxy, затем под-вкладка Options и видим блок Proxy Listeners. В столбце Interface видим «127.0.0.1:8080«. Видим что прокси-сервер Burp по умолчанию работает на 127.0.0.1:8080.

Рекомендую для удобства работы с прокси-серверами в firefox установить расширение ProxyFoxy. Там добавить proxy:

Проверим правильность настройки. С запущенным Burp в firefox перейдите по любой ссылке. Лиса не должна загрузить сайт. В Burp переходим  Proxy -> Intercept. Кликаем на кнопку Intercept is on, она должна измениться на Intercept is off. Возвращаемся в firefox и видим что сайт начал загружаться. Отлично! Пол дела сделано. С учётом того что тестовая форма (feedback) живёт на сайте который поддерживает протокол шифрования https нам надо произвести ещё одну настройку.

 Настройка работы с HTTPS.  

При включённом Burp переходим в firefox по ссылке: http://burp/ В правом верхнем углу видим CA Certificate, нажимаем и загружаем файл с сертификатом.

В firefox лезем: Настройки- > Приватность и Защита -> Сертификаты -> Просмотр сертификатов.​ Нажимаем на Импортировать и выбираем скачанный выше сертификат.
В появившемся окне с чек-боксами оставляем галочку только напротив пункта «Доверят при идентификации веб-сайтов» и нажимаем Ок. Радуемся тому что теперь Burp будет корректно перехватывать https-трафик. Проверяем зайдя в firefox на сайт с https, а в Burp по вкладе Target:
С предварительными ласками закончили, теперь можно заняться тестированием формы FEEDBACK.
 Тестирование формы feedback. 
Открываем форму. Заполняем поля, отправляем. В Burp Suite переходим Target> Sitemap и находим последнюю активность и просматриваем  request и response. Сразу замечу что Burp не корректно работает с кириллицей, так что рекомендую использовать латиницу.
Теперь отправим новый запрос к форме feedback воспользовавшись Repeater в Burp.
Выбираем запрос с которым будем работать (——69372333928532…)  и используем опцию «Send to Repeater» («Отправить в Repeater») из контекстного меню. Создастся новая вкладка в Repeater’е, автоматически заполнятся данные о цели и внесутся соответствующие данные в редактор запросов.
На скрине ниже рабочая область Repeater. В блоке Request поменял значение полей, отправил (кнопка Send), в закладке Response получил подтверждение отправки запроса и успешной обработки (в моём случае это «message»: » \u0421\u043f\u0430\u0441\u0438\u0431\u043e \u0437\u0430 \u0412\u0430\u0448\u0435 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435. \u041e\u043d\u043e \u0443\u0441\u043f\u0435\u0448\u043d\u043e \u043e\u0442\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u043e. » или если перевести на наш «message»: «Спасибо за Ваше сообщение. Оно успешно отправлено.» ).

А что если имеются определённые требования для валидации этих полей согласно которых нужно провести тестирование? К примеру для поля ввода номера телефона запрещено вводить буквы, а для ввода e-mail такая регулярка: ^([a-z0-9_-]+\.)*[a-z0-9_-]+@[a-z0-9_-]+(\.[a-z0-9_-]+)*\.[a-z]{2,6}$ Каждый раз в ручную менять данные в Repeater’е? Так себе решение для автоматизатора. Для этого  есть Intruder, и заранее подготовленные тестовые данные.

Выбираем наш запрос и выбираем «Send to Intruder». Создастся новая вкладка в Intruder’е. Дальнейшие шаги на видео ниже.

Содержание для зарегистрированных пользователей. Чтобы увидеть скрытую часть контента вам нужно зарегистрироваться или войти под своей учётной записью.

Выбранный Attack type = Pitchfork будет последовательно подставлять значения из payload set (1) и payload set (2).  Добавленный Grep — Extract очень удобный фильтр по которому можно отсеивать responce с конкретными содержащимися внутри данными. В частности сделал фильтр на то что данные успешно обработаны и отправлены. В вкладке Options в разделе Request Engine есть тонкая настройка к примеру для тормозных стендов. Настроенный конфиг в Intruder со всеми параметрами можно сохранить и потом при следующей загрузке поднять и повторно использовать.

Это только малая часть того что можно рассказать о возможностях Burp Suite. В какой-то из следующих статей цикла будем использовать Burp при пентесте развёрнутого ранее bWAPP.

Удачи!