ffuf (Fuzz Faster U Fool) — один из тех инструментов, которые быстро становятся незаменимыми. Когда передо мной стоит задача найти скрытые директории, эндпоинты API или подобрать параметры — ffuf мой первый выбор. И дело не только в скорости.

Что умеет ffuf

В отличие от классических инструментов вроде dirb, ffuf позволяет:

  • Фаззить любую часть HTTP-запроса: URL, заголовки, тело POST, cookies
  • Использовать несколько словарей одновременно
  • Гибко фильтровать результаты по статусу, размеру, количеству слов
  • Работать с высокой конкурентностью без потери стабильности

Базовый перебор директорий

Ключевое слово FUZZ — это место подстановки из словаря:

ffuf -u http://target.com/FUZZ -w /usr/share/wordlists/dirb/common.txt

С расширениями файлов:

ffuf -u http://target.com/FUZZ -w wordlist.txt -e .php,.html,.txt,.bak

Фильтрация результатов

По умолчанию ffuf показывает всё. Чаще всего нас интересуют только ответы 200, 301, 302. Используем фильтры:

Показывать только определённые коды ответа:

ffuf -u http://target.com/FUZZ -w wordlist.txt -mc 200,301,302,403

Скрыть ответы с определённым размером (удобно отфильтровать "заглушки"):

ffuf -u http://target.com/FUZZ -w wordlist.txt -fs 4242

Скрыть по количеству слов в ответе:

ffuf -u http://target.com/FUZZ -w wordlist.txt -fw 10

Фаззинг поддоменов (vhost)

ffuf отлично подходит для перебора виртуальных хостов — и это гораздо быстрее, чем DNS-брутфорс:

ffuf -u http://target.com -H "Host: FUZZ.target.com" -w subdomains.txt -fs 4242

Фаззинг POST-параметров

Перебор параметров при авторизации:

ffuf -u http://target.com/login -X POST -d "username=admin&password=FUZZ" -w passwords.txt -fc 401

Где -fc 401 — фильтровать ответы с кодом 401 (неверный пароль).

Несколько словарей одновременно

Используйте разные ключевые слова для разных мест подстановки:

ffuf -u http://target.com/FUZZDIR/FUZZFILE -w dirs.txt:FUZZDIR -w files.txt:FUZZFILE

Рекурсивный режим

ffuf умеет автоматически погружаться в найденные директории:

ffuf -u http://target.com/FUZZ -w wordlist.txt -recursion -recursion-depth 2

Сохранение результатов

ffuf -u http://target.com/FUZZ -w wordlist.txt -o results.json -of json

Форматы вывода: json, ejson, html, md, csv, all.

Советы из практики

Начинайте с небольших словарей (common.txt, raft-medium-directories.txt) — они дают быстрый результат. Для более глубокого исследования переходите к SecLists. Всегда устанавливайте -t (потоки) и -rate (запросов в секунду) с умом — слишком агрессивный фаззинг легко кладёт слабый сервер или вас заблокируют WAF.

ffuf -u http://target.com/FUZZ -w big.txt -t 50 -rate 100 -mc 200,301,403