Gobuster: обзор, установка и рабочие примеры для веб-разведки

1369
Gobuster: обзор, установка и рабочие примеры для веб-разведки

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

Сильная сторона Gobuster не в «умном взломе», а в скорости, простоте и предсказуемости. Инструмент не заменяет сканер уязвимостей, не понимает бизнес-логику приложения и не доказывает риск сам по себе. Gobuster помогает быстро найти поверхность атаки, а дальше найденные адреса, ответы сервера и права доступа проверяют руками или отдельными средствами.

Материал предназначен для легального и ответственного использования. Проверяйте только свои системы, учебные стенды или цели, на которые у вас есть явное разрешение. Соблюдайте законы своей страны, особенно России. Не используйте команды для несанкционированного доступа, слежки, взлома, нарушения правил сервисов или незаконного обхода блокировок.

Что умеет Gobuster в актуальных версиях

Проект Gobuster развивается на GitHub, написан на Go и работает через режимы. В официальном репозитории перечислены основные сценарии: перебор директорий и файлов, поиск DNS-поддоменов, проверка виртуальных хостов, поиск открытых S3 и Google Cloud Storage бакетов, проверка TFTP-файлов и произвольный перебор через ключевое слово FUZZ. Документация проекта доступна в репозитории Gobuster, а в Kali Linux на момент обновления страницы от 2 марта 2026 года указан пакет версии 3.8.2.

РежимЧто ищетКогда полезен
dirДиректории и файлы на веб-сервереПоиск админок, архивов, старых разделов, открытых загрузок
dnsПоддомены через DNS-запросыИнвентаризация внешней зоны, поиск dev, staging, vpn, mail
vhostВиртуальные хосты на одном сервереКогда один IP обслуживает несколько сайтов по заголовку Host
fuzzПроизвольные места в URL, заголовках и теле запросаПоиск параметров, скрытых маршрутов, нестандартных точек входа
s3Имена Amazon S3 бакетовПроверка публично доступных бакетов по словарю имен
gcsИмена Google Cloud Storage бакетовПроверка облачных хранилищ Google по словарю
tftpФайлы на TFTP-сервереАудит сетевого оборудования и старой инфраструктуры

На Kali Gobuster ставится одной командой из штатного репозитория. На обычном Linux, macOS или Windows через PowerShell удобнее ставить через Go. Официальная инструкция сейчас указывает Go 1.24 или новее для установки из исходников.

Установка в Kali или Debian-подобной системе: sudo apt install gobuster

Установка через Go: go install github.com/OJ/gobuster/v3@latest

Проверка версии и доступных команд: gobuster --help

Если команда не находится после установки через Go, проверьте путь к бинарным файлам Go. Обычно нужен каталог ~/go/bin в PATH на Linux и macOS или %USERPROFILE%gobin в PATH на Windows.

Словари решают больше, чем кажется

Gobuster без хорошего словаря почти бесполезен. Маленький словарь даст быстрый, но поверхностный результат. Огромный словарь может часами стучаться в сервер и создать лишнюю нагрузку. В реальном аудите лучше идти от малого к большому: сначала common.txt, затем тематический словарь под стек приложения, затем расширенный словарь только для интересных узлов.

Частый источник словарей - SecLists. В Kali набор часто ставят пакетом seclists, после чего файлы лежат в /usr/share/seclists. Для веб-директорий обычно берут Discovery/Web-Content, для поддоменов - Discovery/DNS.

Установка словарей в Kali: sudo apt install seclists

Быстрый старт для веба: /usr/share/seclists/Discovery/Web-Content/common.txt

Более широкий словарь директорий: /usr/share/seclists/Discovery/Web-Content/directory-list-2.3-medium.txt

Быстрый словарь поддоменов: /usr/share/seclists/Discovery/DNS/subdomains-top1million-5000.txt

Поиск директорий и файлов через dir

Режим dir отвечает за самый известный сценарий Gobuster. Инструмент берет базовый URL, добавляет к нему слова из словаря и смотрит на ответ сервера. В простом виде команда выглядит так:

gobuster dir -u https://example.com -w /usr/share/seclists/Discovery/Web-Content/common.txt

Команда покажет найденные пути и коды ответа. Код 200 обычно значит, что ресурс открылся. Код 301 или 302 говорит о перенаправлении. Код 403 не стоит сразу выкидывать: запрет доступа часто подтверждает, что путь существует, но сервер не отдает содержимое без нужных прав.

Поиск файлов по расширениям

На PHP-сайте обычный перебор директорий может пропустить файлы вроде admin.php или backup.zip, если словарь содержит только admin и backup. Для таких случаев добавляют расширения:

gobuster dir -u https://example.com -w /usr/share/seclists/Discovery/Web-Content/common.txt -x php,html,js,txt,zip,bak

Не добавляйте десятки расширений «на всякий случай». Каждое расширение умножает число запросов. Если в словаре 10 000 слов, а вы указали 8 расширений, сервер получит уже не 10 000 проверок, а примерно 90 000 с учетом исходных слов.

Фильтрация кодов ответа

Для первого прохода часто полезно смотреть 200, 301, 302, 307, 308 и 403:

gobuster dir -u https://example.com -w common.txt -s 200,301,302,307,308,403

Бывает обратная ситуация: сервер на любой мусорный путь отвечает 200 и показывает одинаковую страницу. Тогда список результатов забивается шумом. В таком случае смотрят длину ответа и исключают типовой размер:

gobuster dir -u https://example.com -w common.txt -l

Если почти все ложные ответы имеют длину 1234 байта, можно отфильтровать размер:

gobuster dir -u https://example.com -w common.txt --exclude-length 1234

Авторизация, куки и служебные заголовки

Gobuster полезен не только снаружи. Внутри тестовой учетной записи можно проверить, какие разделы доступны авторизованному пользователю. Для такого сценария передают cookie или заголовок авторизации:

gobuster dir -u https://example.com -w common.txt -c "session=ВАША_ТЕСТОВАЯ_COOKIE"

Пример с Bearer-токеном:

gobuster dir -u https://example.com -w common.txt -H "Authorization: Bearer ТЕСТОВЫЙ_ТОКЕН"

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

Поиск поддоменов через dns

Режим dns перебирает имена перед доменом: admin.example.com, dev.example.com, stage.example.com и так далее. Такой поиск помогает собрать внешнюю поверхность компании и найти забытые тестовые контуры.

Базовая команда:

gobuster dns -d example.com -w /usr/share/seclists/Discovery/DNS/subdomains-top1million-5000.txt

В части новых примеров официальной документации встречается вариант с -do, но на практике безопаснее проверять подсказку установленной версии через gobuster dns --help. В разных сборках короткие флаги могли меняться, а длинные параметры обычно понятнее.

С кастомным DNS-сервером:

gobuster dns -d example.com -w subdomains.txt -r 1.1.1.1:53

С большим числом потоков:

gobuster dns -d example.com -w subdomains.txt -t 50

Здесь легко получить ложные находки из-за wildcard DNS. Некоторые зоны отвечают IP-адресом на любой несуществующий поддомен. Перед доверием к результатам проверьте случайное имя вроде 9f8a7s6d.example.com. Если DNS тоже вернул адрес, результаты надо чистить и сравнивать по IP, CNAME и HTTP-ответам.

Виртуальные хосты через vhost: почему DNS тут не хватает

DNS-поиск отвечает на вопрос, существует ли имя в зоне. Vhost-поиск отвечает на другой вопрос: обслуживает ли конкретный веб-сервер сайт с таким Host-заголовком. На одном IP могут жить внутренние или старые виртуальные хосты, которые не видны в публичной DNS-зоне.

Базовая команда:

gobuster vhost -u https://example.com -w subdomains.txt --append-domain

Ключ --append-domain добавляет домен к словам из словаря. Если в словаре строка admin, Gobuster проверит admin.example.com. Без такого ключа словарь должен уже содержать полные имена.

Если нужно проверить конкретный IP, полезен вариант с URL на IP и заголовком Host, но синтаксис зависит от версии. Сначала посмотрите справку:

gobuster vhost --help

Практический признак удачной vhost-находки - отличие ответа от стандартной страницы. Сравнивайте код, длину, заголовки, заголовок страницы и редиректы. Один код 200 еще не доказывает, что найден отдельный сайт.

Fuzz-режим для параметров, заголовков и нестандартных маршрутов

Режим fuzz подставляет слова вместо маркера FUZZ. Такой подход удобен, когда нужно проверить не только путь, но и параметр, заголовок или тело запроса.

Поиск скрытых параметров:

gobuster fuzz -u "https://example.com/search?FUZZ=test" -w parameters.txt

Перебор значений параметра на тестовом стенде:

gobuster fuzz -u "https://example.com/report?format=FUZZ" -w formats.txt

Проверка служебного заголовка в собственной среде:

gobuster fuzz -u https://example.com -H "X-Forwarded-Host: FUZZ" -w hosts.txt

POST-запрос в учебной лаборатории:

gobuster fuzz -u https://example.com/login -d "username=test&password=FUZZ" -w passwords-lab.txt

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

S3 и GCS: поиск бакетов не равен доступу к данным

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

Проверка Amazon S3:

gobuster s3 -w bucket-names.txt

Проверка Google Cloud Storage:

gobuster gcs -w bucket-names.txt

Словарь лучше строить из легитимных вариантов имени своей компании, продукта и окружений: company, company-backup, company-prod, company-dev, product-static, product-logs. Даже если бакет найден, дальше надо проверять права доступа штатными облачными инструментами и политиками IAM, а не пытаться вытягивать чужие данные.

TFTP: старый протокол, который до сих пор встречается

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

Пример для внутреннего аудита:

gobuster tftp -s 10.0.0.1 -w tftp-files.txt

В словарь обычно кладут типовые имена конфигураций и образов: config, startup-config, running-config, router.cfg, phone.cfg, pxelinux.0. Любая находка в TFTP требует аккуратной проверки прав, сегментации сети и причин, по которым сервер вообще доступен.

Потоки, задержки и тайм-ауты: как не превратить аудит в шум

Gobuster быстрый, но высокая скорость не всегда помогает. На слабом сервере 100 потоков дадут больше ошибок, чем находок. На WAF или балансировщике агрессивный перебор может вызвать блокировку, капчу или лавину 403. Начинайте с умеренных значений и повышайте нагрузку только в согласованном окне тестирования.

ПараметрДля чего нуженРазумный старт
-tЧисло параллельных потоков10-30 для обычного веба, больше только после проверки
--delayПауза между запросами каждого потока100ms-1000ms, если сервер чувствителен к нагрузке
--timeoutОжидание ответа10s по умолчанию, больше для медленных стендов
-oЗапись результата в файлВсегда полезно для отчета и повторной проверки
-qТихий режим без лишнего выводаУдобно для скриптов и конвейеров

Пример аккуратного запуска с задержкой и сохранением результата:

gobuster dir -u https://example.com -w common.txt -t 20 --delay 200ms -o gobuster-dir-example.txt

Пример для медленного стенда:

gobuster dir -u https://example.com -w common.txt -t 5 --timeout 30s --delay 500ms

Типовые ошибки и как читать странные результаты

Первая ошибка - верить каждому найденному URL. Сервер может возвращать 200 на любой путь, CDN может отдавать одинаковую страницу ошибки, приложение может редиректить все запросы на главную. Поэтому смотрите не только код, но и длину ответа, заголовки, редиректы и содержимое страницы.

Вторая ошибка - запускать огромный словарь до понимания цели. На небольшом сайте сначала проверьте robots.txt, sitemap.xml, видимые ссылки, JavaScript-файлы и названия маршрутов в приложении. После ручного осмотра словарь можно обогатить словами из конкретного проекта.

Третья ошибка - путать dns и vhost. Найденный поддомен в DNS не означает, что веб-сервер обслуживает сайт. Найденный vhost не обязан иметь публичную DNS-запись. Для нормальной картины запускают оба режима и сопоставляют ответы.

Четвертая ошибка - забывать про контекст авторизации. Снаружи Gobuster может ничего не найти, а под тестовой ролью обнаружит лишние разделы. Обратная ситуация тоже возможна: авторизованный запрос уходит в другое приложение или другой контур, поэтому результаты надо подписывать, какой учетной записью и с какими заголовками выполнялась проверка.

Мини-сценарии для разных задач

Быстрый осмотр нового веб-сайта

Начните с малого словаря и базовых кодов:

gobuster dir -u https://example.com -w /usr/share/seclists/Discovery/Web-Content/common.txt -s 200,301,302,403 -l -o quick-dir.txt

Если нашлись admin, backup, old, test или upload, проверьте вручную. Не делайте вывод «уязвимость» только по имени каталога. Риск зависит от доступа, содержимого, индексации и роли сервера.

Проверка API на забытые маршруты

Для API логичнее брать словарь с короткими словами и расширением json:

gobuster dir -u https://api.example.com -w api-routes.txt -x json -s 200,401,403,404,405 -l -o api-routes.txt

Коды 401, 403 и 405 в API часто полезны. Запрет доступа или неподдерживаемый метод может показать, что маршрут существует, хотя без авторизации или нужного HTTP-метода ресурс не открылся.

Инвентаризация внешних поддоменов

Для первого прохода:

gobuster dns -d example.com -w /usr/share/seclists/Discovery/DNS/subdomains-top1million-5000.txt -t 50 -o dns-found.txt

После результата проверьте wildcard DNS и прогоните найденные имена через HTTP-клиент или браузер. Полезные находки обычно ведут к тестовым панелям, старым админкам, почтовым интерфейсам, VPN-порталам и забытым окружениям.

Поиск виртуальных хостов на одном IP

Если известен домен, но есть подозрение на дополнительные сайты за тем же сервером:

gobuster vhost -u https://example.com -w /usr/share/seclists/Discovery/DNS/subdomains-top1million-5000.txt --append-domain -o vhost-found.txt

Сравните найденные vhost с DNS-результатами. Vhost без публичной DNS-записи не всегда проблема, но для внутреннего административного интерфейса на внешнем IP такой результат уже повод разбираться.

Проверка облачных имен компании

Соберите словарь из названий компании, продукта, окружений и типовых суффиксов. Затем проверьте S3 и GCS:

gobuster s3 -w company-buckets.txt -o s3-found.txt

gobuster gcs -w company-buckets.txt -o gcs-found.txt

Для подтверждения риска используйте консоль облака, политики доступа и штатные журналы. Публичный бакет с пустым содержимым и публичный бакет с персональными данными - разные уровни проблемы.

Gobuster, ffuf и dirsearch: что выбрать

Gobuster хорош, когда нужен понятный инструмент без лишней настройки. ffuf гибче в фильтрации, работе с несколькими точками FUZZ и сложных HTTP-сценариях. dirsearch удобен для веб-директорий и часто приятнее новичкам из-за готовых настроек. На практике инструменты не заменяют друг друга полностью: Gobuster быстро закрывает базовую разведку, ffuf помогает в нестандартном переборе, dirsearch хорошо подходит для повторяемых проверок веб-путей.

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

Почему Gobuster ничего не нашел?

Чаще всего причина в слабом словаре, неправильном базовом URL, фильтрации кодов ответа, обязательной авторизации или одинаковых ответах сервера на любые пути. Проверьте URL вручную, добавьте -l, смените словарь и посмотрите подсказку gobuster dir --help для вашей версии.

Почему Gobuster показывает слишком много находок?

Сервер может возвращать одинаковую страницу на любой путь. Посмотрите длину ответа через -l и исключите типовой размер через --exclude-length. Еще проверьте редиректы: иногда все несуществующие адреса ведут на главную страницу.

Можно ли запускать Gobuster по чужим сайтам?

Без разрешения - нет. Даже если команда только отправляет HTTP-запросы, массовый перебор может нарушить правила сервиса, вызвать блокировку и создать юридические риски. Используйте собственные системы, учебные лаборатории или согласованный пентест.

Какой словарь выбрать первым?

Для веба начните с common.txt из SecLists. Если сайт большой и тест согласован, переходите к directory-list-2.3-medium.txt. Для DNS начните с subdomains-top1million-5000.txt, затем добавьте словарь, собранный из названий проекта, окружений и внутренних терминов компании.

Gobuster стоит держать в наборе базовых инструментов аудитора, администратора и разработчика, который отвечает за поверхность веб-приложения. Начинайте с легкого словаря, сохраняйте результаты, проверяйте ложные срабатывания и не путайте находку с уязвимостью. Лучший результат Gobuster дает не в одиночку, а вместе с ручной проверкой, журналами сервера, инвентаризацией доменов и нормальным пониманием архитектуры приложения.

Gobuster безопасность пентест директория поддомен vhost fuzzing
Alt text
Обращаем внимание, что все материалы в этом блоге представляют личное мнение их авторов. Редакция SecurityLab.ru не несет ответственности за точность, полноту и достоверность опубликованных данных. Вся информация предоставлена «как есть» и может не соответствовать официальной позиции компании.
LIVE
Думаете, ваша сеть хорошо защищена?
PT NAD 13.0 покажет, где вы ошибаетесь
4 июня · Онлайн-запуск
Зарегистрироваться →
Реклама, АО «Позитив Текнолоджиз», ИНН 7718668887, 18+

Юрий Кочетов

Здесь я делюсь своими не самыми полезными, но крайне забавными мыслями о том, как устроен этот мир. Если вы устали от скучных советов и правильных решений, то вам точно сюда.