Содержание статьи
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.

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