ffuf

Reconnaissance v2.2.0 · 11.07.2026 активный

Феноменально быстрый веб-фаззер, написанный на Go. Имя расшифровывается как "Fuzz Faster U Fool". Заменяет wfuzz, gobuster и dirbuster для большинства задач. Возможности: • Фаззинг URL-путей, параметров, заголовков, тела POST-запроса • Множественные точки фаззинга (FUZZ, W1, W2) • Фильтрация по статусу, размеру, словам, строкам • Поддержка рекурсии, rate limiting, прокси ffuf -w wordlist.txt -u https://target.com/FUZZ -mc 200,301,403

v2.2.0
11.07.2026 current
Добавлен 10.06.2026 · Обновлён 16.06.2026 · Reconnaissance
Установка
# Go install
go install github.com/ffuf/ffuf/v2@latest

# Apt (Kali)
apt install ffuf

# Из исходников
git clone https://github.com/ffuf/ffuf
cd ffuf && go build && mv ffuf /usr/local/bin/

# Бинарник с releases
# https://github.com/ffuf/ffuf/releases
переведено ИИ

маскот ffuf)

ffuf - Быстрый Фаззинг, У Dummy

Быстрый веб-фаззер, написанный на Go.

Установка

или - Если вы на macOS с homebrew, ffuf можно установить командой: brew install ffuf

или - Если у вас установлен компилятор Go последней версии: go install github.com/ffuf/ffuf/v2@latest (та же команда работает для обновления)

или - git clone https://github.com/ffuf/ffuf ; cd ffuf ; go get ; go build

Ffuf требует Go 1.16 или выше.

Примеры использования

Приведенные ниже примеры использования показывают лишь простейшие задачи, которые можно выполнить с помощью ffuf.

Более подробная документация, охватывающая множество функций с большим количеством примеров, доступна в вики ffuf по адресу https://github.com/ffuf/ffuf/wiki

Для более обширной документации с примерами реального использования и советами обязательно ознакомьтесь с отличным руководством: "Все, что вам нужно знать о FFUF" от Michael Skelton (@codingo).

Вы также можете потренировать свои сканирования ffuf на живом хосте с различными уроками и вариантами использования, либо локально, используя Docker-контейнер https://github.com/adamtlangley/ffufme, либо против живой развернутой версии на http://ffuf.me, созданной Adam Langley @adamtlangley.

Типичное обнаружение каталогов

asciicast

Используя ключевое слово FUZZ в конце URL-адреса (-u):

ffuf -w /path/to/wordlist -u https://target/FUZZ

Обнаружение виртуальных хостов (без записей DNS)

asciicast

Предполагая, что размер ответа виртуального хоста по умолчанию составляет 4242 байта, мы можем отфильтровать все ответы такого размера (-fs 4242) при фаззинге заголовка Host:

ffuf -w /path/to/vhost/wordlist -u https://target -H "Host: FUZZ" -fs 4242

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

Фаззинг имени параметра GET очень похож на обнаружение каталогов и работает путем определения ключевого слова FUZZ как части URL. Это также предполагает размер ответа 4242 байта для неверного имени параметра GET.

ffuf -w /path/to/paramnames.txt -u https://target/script.php?FUZZ=test_value -fs 4242

Если имя параметра известно, значения можно фаззить таким же образом. В этом примере предполагается, что неверное значение параметра возвращает HTTP-код ответа 401.

ffuf -w /path/to/values.txt -u https://target/script.php?valid_name=FUZZ -fc 401

Фаззинг данных POST

Это очень простая операция, снова с использованием ключевого слова FUZZ. В этом примере фаззится только часть запроса POST. Мы снова отфильтровываем ответы 401.

ffuf -w /path/to/postdata.txt -X POST -d "username=admin\&password=FUZZ" -u https://target/login.php -fc 401

Максимальное время выполнения

Если вы не хотите, чтобы ffuf выполнялся бесконечно, вы можете использовать -maxtime. Это остановит весь процесс после заданного времени (в секундах).

ffuf -w /path/to/wordlist -u https://target/FUZZ -maxtime 60

При работе с рекурсией вы можете управлять максимальным временем для каждого задания с помощью -maxtime-job. Это остановит текущее задание через заданное время (в секундах) и перейдет к следующему. Новые задания создаются, когда функция рекурсии обнаруживает подкаталог.

ffuf -w /path/to/wordlist -u https://target/FUZZ -maxtime-job 60 -recursion -recursion-depth 2

Также можно комбинировать оба флага, ограничивая максимальное время выполнения как для каждого задания, так и общее время выполнения. Если вы не используете рекурсию, то оба флага ведут себя одинаково.

Использование внешнего мутатора для генерации тестовых случаев

В этом примере мы фаззим JSON-данные, отправляемые через POST. В качестве мутатора используется Radamsa.

При использовании --input-cmd ffuf будет отображать совпадения по их позиции. Это же значение позиции будет доступно вызываемой программе в качестве переменной окружения $FFUF_NUM. Мы будем использовать это значение позиции в качестве seed для мутатора. Файлы example1.txt и example2.txt содержат корректные JSON- payloads. Мы сопоставляем все ответы, но отфильтровываем код ответа 400 - Bad request:

ffuf --input-cmd 'radamsa --seed $FFUF_NUM example1.txt example2.txt' -H "Content-Type: application/json" -X POST -u https://ffuf.io.fi/FUZZ -mc all -fc 400

Конечно, вызывать мутатор для каждого payload не очень эффективно, поэтому мы также можем предварительно сгенерировать payloads, все еще используя Radamsa в качестве примера:

# Генерация 1000 примеров payload
radamsa -n 1000 -o %n.txt example1.txt example2.txt

# В результате создаются файлы 1.txt ... 1000.txt
# Теперь мы можем просто читать данные payload в цикле из файла для ffuf

ffuf --input-cmd 'cat $FFUF_NUM.txt' -H "Content-Type: application/json" -X POST -u https://ffuf.io.fi/ -mc all -fc 400

Файлы конфигурации

При запуске ffuf сначала проверяется наличие файла конфигурации по умолчанию. Путь по умолчанию для файла ffufrc$XDG_CONFIG_HOME/ffuf/ffufrc. Вы можете настроить один или несколько параметров в этом файле, и они будут применяться к последующим задачам ffuf. Пример файла ffufrc можно найти здесь.

Более подробное описание местоположений файла конфигурации можно найти в вики: https://github.com/ffuf/ffuf/wiki/Configuration

Параметры конфигурации, указанные в командной строке, переопределяют те, которые загружены из файла ffufrc по умолчанию. Примечание: это не относится к флагам CLI, которые можно указать несколько раз. Одним из таких примеров является флаг -H (заголовок). В этом случае значения -H, указанные в командной строке, будут добавляться к значениям из файла конфигурации.

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

Использование

Чтобы определить тестовый случай для ffuf, используйте ключевое слово FUZZ в любом месте URL (-u), заголовков (-H) или данных POST (-d).

Fuzz Faster U Fool - v2.1.0

ПАРАМЕТРЫ HTTP:
  -H                  Заголовок `"Имя: Значение"`, разделенный двоеточием. Допускается несколько флагов -H.
  -X                  Используемый HTTP-метод
  -b                  Данные cookie `"NAME1=VALUE1; NAME2=VALUE2"` для функции копирования как curl.
  -cc                 Клиентский сертификат для аутентификации. Ключ клиента также должен быть определен для работы.
  -ck                 Ключ клиента для аутентификации. Сертификат клиента также должен быть определен для работы.
  -d                  Данные POST
  -http2              Использовать протокол HTTP2 (по умолчанию: false)
  -ignore-body        Не получать содержимое ответа. (по умолчанию: false)
  -r                  Следовать за перенаправлениями (по умолчанию: false)
  -raw                Не кодировать URI (по умолчанию: false)
  -recursion          Сканировать рекурсивно. Поддерживается только ключевое слово FUZZ, и URL (-u) должен на него заканчиваться. (по умолчанию: false)
  -recursion-depth    Максимальная глубина рекурсии. (по умолчанию: 0)
  -recursion-strategy Стратегия рекурсии: "default" для основанной на перенаправлении, и "greedy" для рекурсии по всем совпадениям (по умолчанию: default)
  -replay-proxy       Воспроизводить совпавшие запросы через этот прокси.
  -sni                Целевой TLS SNI, не поддерживает ключевое слово FUZZ
  -timeout            Тайм-аут HTTP-запроса в секундах. (по умолчанию: 10)
  -u                  Целевой URL
  -x                  URL прокси (SOCKS5 или HTTP). Например: http://127.0.0.1:8080 или socks5://127.0.0.1:8080

ОБЩИЕ ПАРАМЕТРЫ:
  -V                  Показать информацию о версии. (по умолчанию: false)
  -ac                 Автоматическая калибровка параметров фильтрации (по умолчанию: false)
  -acc                Пользовательская строка автокалибровки. Может использоваться несколько раз. Подразумевает -ac
  -ach                Автокалибровка для каждого хоста (по умолчанию: false)
  -ack                Ключевое слово автокалибровки (по умолчанию: FUZZ)
  -acs                Пользовательские стратегии автокалибровки. Может использоваться несколько раз. Подразумевает -ac
  -c                  Раскрашивать вывод. (по умолчанию: false)
  -config             Загрузить конфигурацию из файла
  -json               Вывод в формате JSON, печать разделенных переносом строк JSON-записей (по умолчанию: false)
  -maxtime            Максимальное время выполнения в секундах для всего процесса. (по умолчанию: 0)
  -maxtime-job        Максимальное время выполнения в секундах для каждого задания. (по умолчанию: 0)
  -noninteractive     Отключить функциональность интерактивной консоли (по умолчанию: false)
  -p                  Задержка `в секундах` между запросами или диапазон случайной задержки. Например "0.1" или "0.1-2.0"
  -rate               Частота запросов в секунду (по умолчанию: 0)
  -s                  Не печатать дополнительную информацию (тихий режим) (по умолчанию: false)
  -sa                 Остановиться при всех ошибках. Подразумевает -sf и -se. (по умолчанию: false)
  -scraperfile        Пользовательский путь к файлу скрапера
  -scrapers           Активные группы скраперов (по умолчанию: все)
  -se                 Остановиться при ложных ошибках (по умолчанию: false)
  -search             Искать payload с FFUFHASH из истории ffuf
  -sf                 Остановиться, когда > 95% ответов возвращают 403 Forbidden (по умолчанию: false)
  -t                  Количество одновременных потоков. (по умолчанию: 40)
  -v                  Подробный вывод, печать полного URL и местоположения перенаправления (если есть) с результатами. (по умолчанию: false)

ПАРАМЕТРЫ СОПОСТАВЛЕНИЯ:
  -mc                 Сопоставлять HTTP-коды состояния или "all" для всего. (по умолчанию: 200-299,301,302,307,401,403,405,500)
  -ml                 Сопоставлять количество строк в ответе
  -mmode              Оператор набора сопоставлений. Either of: and, or (по умолчанию: or)
  -mr                 Сопоставлять регулярное выражение
  -ms                 Сопоставлять размер HTTP-ответа
  -mt                 Сопоставлять количество миллисекунд до первого байта ответа, больше или меньше. Например: >100 или <100
  -mw                 Сопоставлять количество слов в ответе

ПАРАМЕТРЫ ФИЛЬТРАЦИИ:
  -fc                 Фильтровать HTTP-коды состояния из ответа. Список кодов и диапазонов через запятую
  -fl                 Фильтровать по количеству строк в ответе. Список количеств строк и диапазонов через запятую
  -fmode              Оператор набора фильтров. Either of: and, or (по умолчанию: or)
  -fr                 Фильтровать регулярное выражение
  -fs                 Фильтровать размер HTTP-ответа. Список размеров и диапазонов через запятую
  -ft                 Фильтровать по количеству миллисекунд до первого байта ответа, больше или меньше. Например: >100 или <100
  -fw                 Фильтровать по количеству слов в ответе. Список количеств слов и диапазонов через запятую

ПАРАМЕТРЫ ВВОДА:
  -D                  Режим совместимости со списками слов DirSearch. Используется в сочетании с флагом -e. (по умолчанию: false)
  -e                  Список расширений через запятую. Расширяет ключевое слово FUZZ.
  -enc                Кодировщики для ключевых слов, например 'FUZZ:urlencode b64encode'
  -ic                 Игнорировать комментарии в списке слов (по умолчанию: false)
  -input-cmd          Команда, генерирующая ввод. --input-num требуется при использовании этого метода ввода. Переопределяет -w.
  -input-num          Количество входных данных для тестирования. Используется в сочетании с --input-cmd. (по умолчанию: 100)
  -input-shell        Оболочка для запуска команды
  -mode               Режим работы со списком слов. Доступные режимы: clusterbomb, pitchfork, sniper (по умолчанию: clusterbomb)
  -request            Файл, содержащий неформатированный HTTP-запрос
  -request-proto      Протокол, используемый с неформатированным запросом (по умолчанию: https)
  -w                  Путь к файлу со списком слов и (необязательное) ключевое слово, разделенные двоеточием. например. '/path/to/wordlist:KEYWORD'

ПАРАМЕТРЫ ВЫВОДА:
  -debug-log          Записать все внутренние журналы в указанный файл.
  -o                  Записать вывод в файл
  -od                 Путь к каталогу для сохранения совпавших результатов.
  -of                 Формат файла вывода. Доступные форматы: json, ejson, html, md, csv, ecsv (или, 'all' для всех форматов) (по умолчанию: json)
  -or                 Не создавать файл вывода, если нет результатов (по умолчанию: false)

ПРИМЕРЫ ИСПОЛЬЗОВАНИЯ:
  Фаззинг файловых путей из wordlist.txt, сопоставление всех ответов, но фильтрация тех, у которых размер контента 42.
  Цветной, подробный вывод.
    ffuf -w wordlist.txt -u https://example.org/FUZZ -mc all -fs 42 -c -v

  Фаззинг заголовка Host, сопоставление HTTP 200 ответов.
    ffuf -w hosts.txt -u https://example.org/ -H "Host: FUZZ" -mc 200

  Фаззинг JSON-данных POST. Сопоставление всех ответов, не содержащих текст "error".
    ffuf -w entries.txt -u https://example.org/ -X POST -H "Content-Type: application/json" \
      -d '{"name": "FUZZ", "anotherkey": "anothervalue"}' -fr "error"

  Фаззинг нескольких мест. Сопоставление только ответов, отражающих значение ключевого слова "VAL". Цветной.
    ffuf -w params.txt:PARAM -w values.txt:VAL -u https://example.org/?PARAM=VAL -mr "VAL" -c

  Дополнительная информация и примеры: https://github.com/ffuf/ffuf

Интерактивный режим

Нажав ENTER во время выполнения ffuf, процесс приостанавливается, и пользователь попадает в подобный оболочке интерактивный режим:

вход в интерактивный режим
введите "help" для списка команд или ENTER для возобновления.
> help

доступные команды:
 afc  [значение]             - добавить к фильтру кодов состояния 
 fc   [значение]             - (пере)настроить фильтр кодов состояния 
 afl  [значение]             - добавить к фильтру количества строк 
 fl   [значение]             - (пере)настроить фильтр количества строк 
 afw  [значение]             - добавить к фильтру количества слов 
 fw   [значение]             - (пере)настроить фильтр количества слов 
 afs  [значение]             - добавить к фильтру размера 
 fs   [значение]             - (пере)настроить фильтр размера 
 aft  [значение]             - добавить к фильтру времени 
 ft   [значение]             - (пере)настроить фильтр времени 
 rate [значение]             - настроить частоту запросов в секунду (активна: 0)
 queueshow                - показать очередь заданий
 queuedel [номер]        - удалить задание в очереди
 queueskip                - перейти к следующему заданию в очереди
 restart                  - перезапустить и возобновить текущее задание ffuf
 resume                   - возобновить текущее задание ffuf (или: ENTER) 
 show                     - показать результаты для текущего задания
 savejson [имя_файла]      - сохранить текущие совпадения в файл
 help                     - вы смотрите на него
> 

в этом режиме фильтры могут быть пере настроена, управляемой очередью и текущее состояние сохранено на диск.

При (пере)настройке фильтров они применяются постфактум, и все ложные положительные совпадения из памяти, которые были бы отфильтрованы newly добавленными фильтрами, удаляются.

Новое состояние совпадений может быть выведено командой show, которая выведет все совпадения так, как если бы они были найдены ffuf.

Поскольку "негативные" совпадения не хранятся в памяти, к сожалению, смягчение фильтров не может вернуть потерянные совпадения. Для такого сценария пользователь может использовать команду restart, которая сбрасывает состояние и запускает текущее задание сначала.

Лицензия

ffuf выпущен под лицензией MIT. См. ЛИЦЕНЗИЮ.

Комментарии
Войдите, чтобы оставить комментарий

Комментарии (1)
kassavir
kassavir 17.06.2026 в 14:18

первонах