Содержание статьи
warning
Статья имеет ознакомительный характер и предназначена для специалистов по безопасности, проводящих тестирование в рамках контракта. Автор и редакция не несут ответственности за любой вред, причиненный с применением изложенной информации. Распространение вредоносных программ, нарушение работы систем и нарушение тайны переписки преследуются по закону.
Fuzzing — автоматический метод тестирования, когда приложению на вход подаются случайные или недопустимые данные. Команда OWASP, объясняя фаззинг, предлагает рассмотреть игру, в которой пользователю задается вопрос и предоставлены три варианта ответа: 1, 2 или 3. Но что, если в ответ отправить 5? Или 255? Может быть, вообще не число, а символ? Это классический метод фаззинга.
Легенда о появлении фаззинга
В восьмидесятых годах профессор Бартон Миллер и его команда работали над проектом по тестированию надежности программ в условиях помех. По легенде, ученые обратили внимание на «белый шум» на телефонной линии во время грозы. Этот шум и называют fuzz. Команда решила попробовать «зашуметь» данные на вход программы — подавать случайные, бессмысленные, «размытые» (fuzzy) данные.
В вебе хакеры фаззят, чтобы найти чувствительные части приложения: папку с уязвимой админкой, дамп базы данных или автокопию конфига. Фаззинг на вебе — это перечисление по заранее составленным словарям.
Тулза для фаззинга построчно проходит словарь, отправляя значения как часть запроса. Процесс можно представить в виде диалога между клиентом и сервером:
— Есть файл passwords.?
— Нет.
— Может, password.?
— Тоже нет.
— Может, wp-config.?
— А это есть, держи содержимое...
Теперь у тебя в руках креды от базы данных и прочее, что лежало в забытом файлике.

По сути, процесс больше похож на подбор паролей по словарю, чем на реальный фаззинг, но, раз уж такое название прижилось, будем использовать его.
Словари
Словари — это заранее составленные списки вариантов. Бывают словари общего назначения вроде списка интересных директорий и имен файлов. Пример словаря:
.bash_history
.bashrc
.cache
.config
.cvs
.cvsignore
.env
.forward
.git
.git-rewrite
Этот словарь ориентирован на поиск чувствительных файлов. Если мы вдруг найдем https://, есть шанс, что внутри отыщутся пути к другим интересным файлам.
Многие названия из списка имеют мало шансов засветиться в сети. Тот же . обычно закрыт правилами веб‑сервера, а . почти никогда не попадает в папку веб‑сервера.
Но отличительная черта фаззинга как раз в том, что проверяются даже самые редкие варианты. Мы ведь хотим знать, что админ случайно оставил свой . в общем доступе? Значит, не помешает проверить!
Существуют словари, составленные специально для определенных задач. Пример первых строк из списка плагинов WordPress:
0-delay-late-caching-for-feeds
0-errors
0gravatar
0mk-shortener
001-prime-strategy-translate-accelerator
1-1
1-bit-audio-player
Если мы тестируем сайт на WordPress, то можем обращаться к таким адресам, используя этот список:
https://site.com/wp-content/plugins/название-плагина/
Так мы определим, какие плагины установлены на сайте, и если отыщутся уязвимые версии, то сможем поискать готовые эксплоиты для них или создать самостоятельно по описаниям уязвимостей.
Есть целые библиотеки словарей вроде популярного SecLists (он предустановлен на Kali) и FuzzDB. В наборах файлы обычно разбиты по категориям. Я буду использовать SecLists, папку Discovery. В этой папке лежит все необходимое для сбора данных о веб‑приложении: словари для DNS-фаззинга, большие списки имен файлов и папок, перечисления API и специфические имена для разных CMS.

Установи оба набора на свою машину и покопайся в папках, разберись, какие словари есть внутри.
Продолжение доступно только участникам
Вариант 1. Присоединись к сообществу «Xakep.ru», чтобы читать все материалы на сайте
Членство в сообществе в течение указанного срока откроет тебе доступ ко ВСЕМ материалам «Хакера», позволит скачивать выпуски в PDF, отключит рекламу на сайте и увеличит личную накопительную скидку! Подробнее
Вариант 2. Открой один материал
Заинтересовала статья, но нет возможности стать членом клуба «Xakep.ru»? Тогда этот вариант для тебя! Обрати внимание: этот способ подходит только для статей, опубликованных более двух месяцев назад.
Я уже участник «Xakep.ru»
