IBCOURSES / ПЕНТЕСТ И БЕЗОПАСНОСТЬ ПРИЛОЖЕНИЙ

Инструменты для веб-фаззинга: сравнение ffuf, feroxbuster, Burp Intruder, Nuclei и других — что выбрать в 2026 году

— автоматическая подача мутированных или сгенерированных запросов веб-приложению и его API для поиска скрытых путей, параметров и уязвимостей. Как устроены веб-фаззеры, по каким критериям их сравнивать, чем отличаются ffuf, feroxbuster, gobuster, Burp Intruder, Caido, Nuclei, Schemathesis и как встроить фаззинг в процесс тестирования разберем в этой статье.

Что такое веб-фаззинг и почему выбор инструмента — это не «просто взять ffuf»

В большинстве «фаззинг» выглядит так: копируется команда ffuf -w wordlist.txt -u https://target/FUZZ из шпаргалки, запускается один раз со стандартным словарём, находится пара директорий /admin и /backup , тестировщик переходит дальше. Через неделю выясняется, что за -фильтром скрывался эндпоинт, который так и не был найден, потому что словарь не подошёл под конкретный стек приложения. Это не веб-фаззинг как практика. Это разовая проверка одним инструментом с настройками по умолчанию.

Веб-фаззинг в широком смысле — это семейство разных задач, которые объединяет только принцип «подставить много значений в одну точку и посмотреть на реакцию»: перебор директорий и файлов (content discovery), перебор виртуальных хостов и поддоменов, фаззинг параметров запроса и заголовков, фаззинг тела запроса и полей форм, направленный -фаззинг по известным паттернам уязвимостей (, , ), фаззинг по OpenAPI/GraphQL-схеме. Ключевое отличие от классического фаззинга бинарных программ в том, что «программа» здесь — весь веб-стек целиком: сервер приложений, прокси, WAF, база данных, — и однозначного сигнала «упало» часто нет. Нужно строить его самому: по коду ответа, длине, времени, заголовкам.

Цифра в контексте. Content discovery остаётся одной из самых результативных техник веб-разведки: по данным сравнительного обзора инструментов для перебора директорий, ни один инструмент не выигрывает по всем параметрам сразу — gobuster берёт простотой и предустановленностью в Kali, ffuf — гибкостью и скоростью, feroxbuster — автоматической рекурсией и обработкой wildcard-ответов. Проблема не в том, что инструменты плохие. Проблема в том, что выбор без понимания критериев почти всегда даёт неполную картину.

Чем веб-фаззинг отличается от DAST-сканера и content discovery «для галочки»

Эти термины часто путают. DAST-сканер (например, полный скан Burp Suite или ZAP) проверяет приложение по фиксированному набору правил и плагинов — быстро даёт общую картину, но плохо находит нестандартную логику. Content discovery — частный случай фаззинга: перебор путей по словарю, отвечает на вопрос «что вообще есть на сервере». Направленный фаззинг параметров — отвечает на вопрос «как поведёт себя конкретная точка ввода на нестандартных значениях» и требует не словаря путей, а словаря полезных нагрузок. Путать их — значит, например, гонять DAST-сканер там, где нужен точечный перебор параметров, и наоборот.

Как работает типичный веб-фаззер

Цикл проще, чем у coverage-guided фаззера бинарников, потому что обратная связь по покрытию кода сервера обычно недоступна. Инструмент берёт список значений (wordlist), подставляет каждое на место маркера ( FUZZ ) в URL, заголовке или теле запроса, отправляет запрос и анализирует ответ: код состояния, длину тела, количество слов, время отклика. Интересные ответы отфильтровываются по правилам (matchers/filters): «показать только 200», «скрыть ответы длиной 4242 байта» (типичный wildcard-паттерн, когда сервер отвечает одинаково на любой несуществующий путь). Более продвинутые инструменты умеют рекурсивно спускаться в найденные директории, автоматически определять и игнорировать wildcard-ответы, а направленные DAST-движки (Nuclei в режиме -dast ) добавляют к этому шаблоны с готовыми полезными нагрузками и правилами обнаружения конкретных классов уязвимостей.

Пять критериев, по которым сравнивают веб-фаззеры

Как и с любым классом инструментов, вопрос «какой фаззер лучше» без уточнений бессмысленен. Пять критериев отсекают разных кандидатов под разные задачи.

Критерий 1: что именно фаззится

Первый вопрос — какая часть запроса меняется. Путь URL (content discovery), поддомен или значение заголовка Host (vhost discovery), значение GET/POST-параметра, произвольный заголовок, JSON- или multipart-тело. Разные инструменты изначально заточены под разные точки: gobuster и feroxbuster — прежде всего под перебор путей, ffuf одинаково хорошо работает с любой точкой запроса, Burp Intruder и Caido Automate универсальны, но требуют ручной разметки позиции.

Критерий 2: словарь vs схема

Wordlist-based фаззеры (ffuf, gobuster, feroxbuster, Burp Intruder) перебирают готовый список значений — качество результата напрямую зависит от качества словаря (SecLists остаётся стандартом де-факто). Schema-based инструменты (Schemathesis, RESTler, EvoMaster) генерируют запросы по формальному описанию API — /Swagger или GraphQL-схеме — и не нуждаются в словаре путей вовсе, потому что знают структуру API заранее. Для REST и GraphQL API с доступной схемой это кардинально другой и обычно более результативный подход.

Критерий 3: обработка ложных срабатываний

Веб-серверы часто отвечают 200 OK на любой путь (SPA с фронтенд-роутингом, кастомные страницы ошибок). Без фильтрации такой ответ фаззер зафиксирует как «найдено» для каждого слова в словаре. Ключевое отличие инструментов здесь — автоматическое или ручное определение wildcard-паттерна: feroxbuster делает это по умолчанию, в ffuf нужно явно задать фильтры ( -fs , -fw , -fl ), в самописных скриптах это приходится реализовывать самостоятельно.

Критерий 4: рекурсия и глубина

Часть задач требует не одного прохода, а рекурсивного спуска: нашли директорию — просканировали её содержимое — нашли поддиректорию — повторили. feroxbuster делает это автоматически и это его ключевая особенность, gobuster и ffuf требуют либо явного флага рекурсии, либо ручного повторного запуска на каждый найденный путь.

Критерий 5: интеграция в рабочий процесс

Инструмент командной строки (ffuf, gobuster, feroxbuster) хорош для точечного запуска и автоматизации в скриптах и CI. Прокси с UI (Burp Suite, Caido, ZAP) удобен, когда нужно фаззить запрос, только что перехваченный вручную, с сохранением сессии, куки и токенов. Шаблонный сканер (Nuclei) хорош для массового прогона по большому числу целей с готовыми правилами обнаружения. Выбор часто определяется не тем, «какой инструмент мощнее», а тем, в каком месте процесса тестирования он должен встать.

Метрики сравнения: скорость, точность и покрытие путей

Скорость (запросов в секунду / RPS). Написанные на Go ffuf, gobuster и feroxbuster в бенчмарках 2026 года показывают сопоставимую высокую скорость на одном и том же словаре и целевом хосте; итоговая пропускная способность на практике чаще упирается не в сам инструмент, а в лимиты сервера и WAF. Python-инструменты вроде wfuzz заметно медленнее аналогов на Go и Rust.

Точность (доля ложных срабатываний). Определяется качеством обработки wildcard ответов и матчеров/фильтров, а не сырой скоростью — быстрый фаззер с плохой фильтрацией просто быстрее нагенерирует мусор.

Покрытие путей (глубина и полнота обнаружения). Зависит от словаря, поддержки рекурсии и расширений файлов сильнее, чем от самого движка перебора: одинаковый словарь на разных инструментах в среднем находит одинаковый набор путей, если рекурсия и расширения настроены одинаково.

Практическое правило: не выбирайте инструмент по бенчмарку с чужого сайта — тестовые стенды сильно отличаются по вайлдкард-поведению, WAF и rate-limit. Прогоните два-три кандидата на одном и том же реальном или тестовом хосте с одним и тем же словарём и сравните число уникальных находок и ложных срабатываний за фиксированное время.

Инструменты веб-фаззинга: что используют специалисты в 2026 году

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

Перебор директорий, файлов и виртуальных хостов

ffuf («Fuzz Faster U Fool») — фаззер на Go, вдохновлённый gobuster и wfuzz. Работает с маркером FUZZ , который можно поставить в любую часть запроса — путь, заголовок, тело, значение параметра, — что делает его не только directory-фаззером, но и универсальным инструментом для fuzzing параметров и заголовков. Поддерживает рекурсию, гибкие матчеры и фильтры, silent-режим для конвейеров команд. В опросах сообщества и сравнительных обзорах регулярно называется инструментом с лучшим балансом функциональности и производительности.

feroxbuster — фаззер директорий на Rust с упором на автоматическую рекурсию: находит директорию — сразу сканирует её содержимое без дополнительных запусков. По сравнительным материалам заметно лучше и gobuster, и старых версий ffuf справляется с автоматическим определением wildcard-ответов «из коробки». Ограничение — меньше гибкости для фаззинга произвольных частей запроса за пределами пути.

gobuster — один из первых широко используемых Go-фаззеров директорий, также умеет в режимы vhost (перебор виртуальных хостов по заголовку Host) и dns (перебор поддоменов). Предустановлен в Kali Linux, прост в освоении. Ограничение — не поддерживает рекурсию «из коробки» и не использует маркер FUZZ , поэтому менее гибок для нестандартных сценариев, чем ffuf.

wfuzz — один из первых популярных фаззеров на Python, начинавший как инструмент для перебора и путей, и параметров одновременно. Более гибок, чем ранние версии gobuster, за счёт скриптуемости на Python, но заметно медленнее Go- и Rust-аналогов и не предустановлен в Kali. Многие обзоры описывают его как «показывающий возраст», но всё ещё полезный для сложных сценариев за счёт скриптов.

dirsearch — ещё один популярный Python-инструмент перебора директорий с продуманными настройками по умолчанию и удобным выводом; регулярно фигурирует в сравнительных обзорах наравне с gobuster и ffuf как более «дружелюбный к новичку» вариант.

Интерцептирующие прокси с фаззером

Burp Suite Intruder — фаззер, встроенный в самый распространённый инструмент ручного тестирования веб-приложений. Четыре режима атаки — Sniper, Battering Ram, Pitchfork, Cluster Bomb — покрывают большинство сценариев подстановки одного или нескольких параметров одновременно. Удобство в том, что запрос для фаззинга берётся прямо из истории перехваченного трафика вместе с куками и токенами сессии. Ограничение — в бесплатной Community-редакции Intruder намеренно ограничен по скорости; полноценная скорость доступна только в платной Professional.

Turbo Intruder — расширение для Burp, которое решает именно проблему скорости: HTTP-стек написан с нуля ради производительности и по строкам официального описания на многих целях обгоняет даже асинхронные скрипты на Go. Атаки описываются на Python, что даёт гибкость для сложных сценариев вроде подписанных запросов и многошаговых атак, а плоское потребление памяти позволяет держать многодневные прогоны.

Caido Automate — встроенный аналог Burp Intruder в более новом инструменте Caido: поддерживает словари, числовые диапазоны, несколько наборов полезных нагрузок и препроцессоры. По официальному сравнению функций Caido с Burp это покрывает основные сценарии Intruder, но полного аналога Turbo Intruder — с его Python-логикой и экстремальной пропускной способностью — в Caido пока нет.

OWASP ZAP Fuzzer — встроенный фаззер бесплатного и полностью открытого ZAP. Поддерживает кастомные позиции полезной нагрузки, счётчик потоков, задержки и даже фаззинг WebSocket-сообщений. В сравнениях описывается как менее отполированный, чем Burp Intruder, по набору настроек атаки, но как полноценная бесплатная альтернатива для тех, кто не готов платить за Burp Pro — особенно если углубиться в скрипты ZAP.

Шаблонные и направленные сканеры

Nuclei — сканер на YAML-шаблонах от ProjectDiscovery. С версии 2.8 умеет фаззить произвольные параметры запроса по заранее заданным полезным нагрузкам, а начиная с релизов 3.x эта возможность выросла в полноценный DAST-режим, включённый флагом -dast : шаблоны для этого режима переехали из отдельного репозитория fuzzing- templates в основной nuclei-templates . Движок разбирает запрос на «фаззируемые» части (query, headers, body, path, JSON, XML, form-data) и применяет к ним трансформации из шаблона, что позволяет искать целые классы уязвимостей — открытые редиректы, XSS, SSRF, SQLi — по готовым правилам, а не по одному словарю. Ограничение — качество результата целиком зависит от полноты и актуальности набора шаблонов.

Arjun — узкоспециализированный инструмент для обнаружения скрытых GET/POST параметров: перебирает большой словарь имён параметров и смотрит, меняется ли ответ приложения. Часто используется как подготовительный шаг перед фаззингом самих значений найденных параметров.

dalfox — фокусируется конкретно на XSS: комбинирует обнаружение параметров, генерацию полезных нагрузок и верификацию через headless-браузер, что снижает число ложных срабатываний по сравнению с обычным словарным перебором.

Фаззинг REST и GraphQL API по схеме

Schemathesis — генерирует тесты напрямую по спецификации OpenAPI или : не нужен словарь путей, потому что список эндпоинтов и типы параметров уже описаны в схеме. Из всех open-source инструментов этого класса чаще всего называется самым дружелюбным к практикам: устанавливается через pip, официально поддерживает интеграцию через GitHub Actions, имеет развитую документацию. Умеет работать напрямую в процессе (ASGI/WSGI) для Python-приложений, что даёт доступ к покрытию кода.

RESTler — фаззер от Microsoft Research, ориентированный на stateful-тестирование: анализирует зависимости между эндпоинтами по схеме (например, что PUT-запрос должен идти после POST, создавшего ресурс) и выстраивает последовательности вызовов, а не тестирует эндпоинты изолированно. Требует сборки из исходников, что снижает удобство по сравнению со Schemathesis.

EvoMaster — единственный из популярных open-source REST/GraphQL/RPC-фаззеров с поддержкой white-box режима: инструментирует байткод тестируемого сервиса (для JVM) и использует эволюционные алгоритмы, отталкиваясь от реального покрытия кода, а не только от структуры схемы. В независимых академических сравнениях нескольких фаззеров REST API на общем наборе из 19 сервисов EvoMaster и Schemathesis стабильно показывали лучшие результаты по покрытию среди всех участников, при этом результат заметно зависел от конкретного тестируемого сервиса.

Сводная таблица

На узком экране таблицу можно прокрутить вправо →

Инструмент

Что фаззит

Сила

Ограничение

ffuf

Путь, параметр,

заголовок, тело

Универсальность,

скорость

Wildcard-фильтры нужно настраивать вручную

feroxbuster

Путь (директории/ файлы)

Автоматическая

рекурсия и wildcard

детект

Меньше гибкости вне пути

gobuster

Путь, vhost, DNS

Простота,

предустановлен в Kali

Нет рекурсии «из коробки»

wfuzz /

dirsearch

Путь, параметр

Гибкость через Python скрипты

Ниже скорость

Burp Intruder

Любая часть

перехваченного

запроса

Интеграция с сессией/ куками, 4 режима атаки

Community

редакция

ограничена по

скорости

Turbo Intruder

То же,

экстремальная

нагрузка

Скорость, Python-логика, многодневные прогоны

Требует навыков Python

Caido

Automate

То же

Современный UI,

словари и диапазоны

Нет аналога Turbo Intruder

OWASP ZAP Fuzzer

Любая часть

запроса, WebSocket

Полностью бесплатный

Меньше настроек атаки без скриптов

Nuclei ( -

dast )

Query, headers,

body, path по

шаблонам

Готовые правила под классы уязвимостей

Зависит от

полноты шаблонов

Arjun / dalfox

Параметры / XSS

Узкая специализация, меньше шума

Не универсальны

Schemathesis

REST/GraphQL по схеме

Простота установки, CI интеграция

Нужна валидная схема

RESTler /

EvoMaster

REST/RPC по

схеме, stateful

Учёт зависимостей

между эндпоинтами,

white-box у EvoMaster

Выше порог входа

Как выбрать инструмент: практическая схема

Разведка неизвестного веб-приложения без схемы. Начните с feroxbuster или ffuf с рекурсией для content discovery, затем gobuster в режиме vhost для поиска виртуальных хостов.

Перехваченный запрос из браузера с активной сессией. Burp Intruder или Caido Automate — запрос уже в истории со всеми куками и токенами, размечать позиции вручную удобнее в UI.

Экстремальный объём запросов или сложная многошаговая логика (подписи, токены, race conditions). Turbo Intruder — единственный вариант из перечисленных, рассчитанный именно на это.

Массовая проверка большого числа целей на известные классы уязвимостей. Nuclei в режиме -dast с актуальными шаблонами.

REST или GraphQL API с доступной OpenAPI/Swagger-схемой. Schemathesis как отправная точка из-за простоты установки и CI-интеграции; RESTler или EvoMaster — если нужен учёт последовательностей запросов или white-box-доступ к покрытию.

Полностью бесплатный стек без ограничений скорости. ffuf + feroxbuster + ZAP Fuzzer — комбинация, не упирающаяся в лимиты Community-редакций.

Как внедрить веб-фаззинг в процесс тестирования

Шаг 1 — определите цели. Content discovery — для новых или малоизученных хостов, параметрический фаззинг — для точек, принимающих ввод пользователя (формы, API эндпоинты), DAST-шаблоны — для регулярного массового прогона по всей поверхности.

Шаг 2 — подготовьте словари. SecLists остаётся отправной точкой для путей и параметров; для узкоспециализированных стеков (конкретная CMS, фреймворк) словарь стоит дополнить именами, специфичными для этого стека.

Шаг 3 — настройте фильтрацию ложных срабатываний. Прежде чем запускать боевой прогон, отправьте заведомо несуществующий путь и посмотрите на ответ — это и есть wildcard-паттерн, который нужно исключить фильтром или довериться автоматическому определению (feroxbuster).

Шаг 4 — соблюдайте лимиты. и WAF — не препятствие, а часть реальных условий; слишком агрессивный поток запросов либо блокируется, либо искажает статистику по времени ответа, на которую опираются некоторые матчеры.

Шаг 5 — фиксируйте находки как регрессию. Найденные эндпоинты и параметры стоит сохранять в файл целей для повторного использования в следующих итерациях, а не запускать разведку каждый раз с нуля.

Шаг 6 — автоматизируйте постепенно. Точечные ручные прогоны → скрипты с сохранением результатов → регулярный прогон Nuclei или Schemathesis в CI по мере появления новых эндпоинтов.

KPI и метрики эффективности веб-фаззинга

Ключевые метрики:

  • число уникальных находок после дедупликации по wildcard паттерну;
  • доля ложных срабатываний в отчёте;
  • покрытие эндпоинтов — какая доля известных по документации или схеме путей реально проверена;
  • время до обнаружения новых эндпоинтов после деплоя изменений;
  • скорость (RPS) относительно лимитов цели — не абсолютная, а достаточная, чтобы не блокироваться WAF;
  • регрессия находок — какая доля ранее найденных путей и параметров исчезает или меняется при повторных прогонах, что часто сигнализирует об изменениях в приложении, которые стоит проверить отдельно.
С пентестом.

Content discovery и параметрический фаззинг — стандартный этап разведки на старте пентеста веб-приложения, до перехода к ручной эксплуатации.

С DAST.

Направленные DAST-шаблоны Nuclei и полный скан Burp/ZAP решают частично пересекающиеся задачи — шаблонный фаззер быстрее и точечнее на известных классах уязвимостей, полный DAST-скан даёт более широкое, но менее глубокое покрытие.

С bug bounty.

Content discovery и обнаружение скрытых параметров (Arjun) — одна из самых используемых техник в автоматизированной разведке для bug bounty, часто оформленная в целые пайплайны из нескольких инструментов подряд.

С безопасной разработкой API.

Schema-based фаззинг REST и GraphQL API логично встраивается в CI сразу после генерации или обновления OpenAPI-схемы — тогда тестирование не отстаёт от изменений контракта API.

С С OSINT.

Прежде чем что-то фаззить, нужно понять, что вообще есть у цели: поддомены, используемые технологии, забытые сервисы, утечки. Хороший список целей часто важнее хорошего словаря.

С реверс-инжинирингом.

Когда у приложения есть не только веб-слой, но и клиент или бинарный компонент, тот же принцип «подать неожиданный вход и посмотреть на реакцию» переходит на уровень программного кода, и здесь уже нужны навыки анализа ПО без исходников.

С чего начать изучение веб-фаззинга

Практическая отработка не требует боевой цели. Разверните заведомо уязвимое веб приложение (DVWA, OWASP Juice Shop, WebGoat) и пройдите полный цикл: сначала content discovery через feroxbuster и ffuf на одном и том же словаре, сравните находки; затем параметрический фаззинг через ffuf с маркером FUZZ в значении параметра; затем перехватите запрос через Burp или Caido и повторите то же в Intruder/Automate — обратите внимание, насколько удобнее работать с уже авторизованной сессией. Если приложение отдаёт OpenAPI-схему, попробуйте Schemathesis и сравните, сколько уязвимостей находится автоматически по схеме без единого написанного вручную словаря.

Освоить весь этот стек инструментов самостоятельно реально, но типичные затыки хорошо знакомы: неправильно настроенный wildcard-фильтр топит находки в шуме, скудный словарь пропускает нестандартные эндпоинты, а без понимания разницы между content discovery и параметрическим фаззингом легко потратить время не на ту задачу. Если хочется пройти этот путь быстрее и с разбором ошибок от практиков, стоит посмотреть на структурированную программу — например, на курсы Академии Кодебай.

Где учиться?

Документация ffuf на GitHub и репозиторий SecLists — стандартный набор словарей для content discovery.

The Hacker Recipes, раздел про directory fuzzing — сравнение подходов и готовые команды.

Документация Nuclei по fuzzing/DAST-режиму — описание частей запроса, доступных для фаззинга, и синтаксиса шаблонов.

Документация Schemathesis — быстрый старт для фаззинга по OpenAPI/GraphQL схеме.

Официальная документация Burp Intruder и Caido Automate — если фаззинг ведётся через перехватывающий прокси.

HackerLab — практические задачи и CTF-платформа Кодебай для отработки навыков на реальных сценариях.

Иллюстрация

На телефоне увеличенную схему можно прокрутить вправо.