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 , тестировщик переходит дальше. Через неделю выясняется, что за WAF-фильтром скрывался эндпоинт, который так и не был найден, потому что словарь не подошёл под конкретный стек приложения. Это не веб-фаззинг как практика. Это разовая проверка одним инструментом с настройками по умолчанию.
Веб-фаззинг в широком смысле — это семейство разных задач, которые объединяет только принцип «подставить много значений в одну точку и посмотреть на реакцию»: перебор директорий и файлов (content discovery), перебор виртуальных хостов и поддоменов, фаззинг параметров запроса и заголовков, фаззинг тела запроса и полей форм, направленный DAST-фаззинг по известным паттернам уязвимостей (SQLi, XSS, SSRF), фаззинг по 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 — OpenAPI/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 или GraphQL: не нужен словарь путей, потому что список эндпоинтов и типы параметров уже описаны в схеме. Из всех 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 (
| 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 — соблюдайте лимиты. Rate-limit и WAF — не препятствие, а часть реальных условий; слишком агрессивный поток запросов либо блокируется, либо искажает статистику по времени ответа, на которую опираются некоторые матчеры.
Шаг 5 — фиксируйте находки как регрессию. Найденные эндпоинты и параметры стоит сохранять в файл целей для повторного использования в следующих итерациях, а не запускать разведку каждый раз с нуля.
Шаг 6 — автоматизируйте постепенно. Точечные ручные прогоны → скрипты с сохранением результатов → регулярный прогон Nuclei или Schemathesis в CI по мере появления новых эндпоинтов.
KPI и метрики эффективности веб-фаззинга
Ключевые метрики:
- число уникальных находок после дедупликации по wildcard паттерну;
- доля ложных срабатываний в отчёте;
- покрытие эндпоинтов — какая доля известных по документации или схеме путей реально проверена;
- время до обнаружения новых эндпоинтов после деплоя изменений;
- скорость (RPS) относительно лимитов цели — не абсолютная, а достаточная, чтобы не блокироваться WAF;
- регрессия находок — какая доля ранее найденных путей и параметров исчезает или меняется при повторных прогонах, что часто сигнализирует об изменениях в приложении, которые стоит проверить отдельно.
Как веб-фаззинг связан с другими процессами ИБ
Content discovery и параметрический фаззинг — стандартный этап разведки на старте пентеста веб-приложения, до перехода к ручной эксплуатации.
Направленные DAST-шаблоны Nuclei и полный скан Burp/ZAP решают частично пересекающиеся задачи — шаблонный фаззер быстрее и точечнее на известных классах уязвимостей, полный DAST-скан даёт более широкое, но менее глубокое покрытие.
Content discovery и обнаружение скрытых параметров (Arjun) — одна из самых используемых техник в автоматизированной разведке для bug bounty, часто оформленная в целые пайплайны из нескольких инструментов подряд.
Schema-based фаззинг REST и GraphQL API логично встраивается в CI сразу после генерации или обновления OpenAPI-схемы — тогда тестирование не отстаёт от изменений контракта API.
Прежде чем что-то фаззить, нужно понять, что вообще есть у цели: поддомены, используемые технологии, забытые сервисы, утечки. Хороший список целей часто важнее хорошего словаря.
Когда у приложения есть не только веб-слой, но и клиент или бинарный компонент, тот же принцип «подать неожиданный вход и посмотреть на реакцию» переходит на уровень программного кода, и здесь уже нужны навыки анализа ПО без исходников.
С чего начать изучение веб-фаззинга
Практическая отработка не требует боевой цели. Разверните заведомо уязвимое веб приложение (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-платформа Кодебай для отработки навыков на реальных сценариях.