20.01.2016

Материалы для фаззинга [FuzzDB]


фаззинг (англ. fuzzing) — это способ тестирования приложений, в основе которого лежит передача некорректных, случайных или непредвиденных логикой программы данных. Чаще всего фаззинг применяется при blackbox-тестировании, т.е. в условиях отсутствия исходных кодов приложения.

Прежде всего необходимо определить нашу цель и отправить ее в Intruder (Actions -> Send To Intruder)...



Далее, определяются маркеры, куда будут подставляться данные (обозначаются с помощью символов §)



Теперь необходимо загрузить в Intruder необходимую базу из FuzzDB. Так как будем проверять на SQL-инъекции, во вкладке payloads загрузим attack-payloads/sql-injection/detect/GenericBlind.fuzz.txt. Из комментария в текстовом файле видно, что база позаимствована из wapiti и маркеры __TIME__ для sleep() и wait for оставлены как есть. Поэтому в Intruder’е изменяем правила обработки строк (payload processing rules): добавляем новое правило match/replace, где match regex равно __TIME__, а replace string — 5.



Последнее, что необходимо сделать перед запуском, это указать шаблоны ответов для определения уязвимых мест. Переходим во вкладку options и загружаем в секции grep список regex/errors.txt.



Все готово, можно начинать атаку (Intruder -> Start Attack). После ее завершения уязвимые параметры видно по коду ответа web-сервера 500, а также по наличию в теле ответа указанных нами строк.



FuzzDB действительно полезный инструмент, который может пригодиться любому пентестеру. Более подробную информацию о примерах использования можно получить наwiki-странице проекта