Введение
В этой лабораторной работе вы изучите гибкие возможности фаззинга (fuzzing) Gobuster, популярного инструмента для перебора директорий и файлов. Хотя Gobuster широко известен своим режимом dir, его режим fuzz предоставляет мощный способ обнаружения скрытого веб-контента путем внедрения полезных нагрузок (payloads) в различные части URL. Вы научитесь конструировать URL со специальным ключевым словом FUZZ, предоставлять пользовательские списки слов (wordlists), выполнять фаззинг-сканирование и интерпретировать результаты для выявления потенциальных уязвимостей или скрытых ресурсов на веб-сервере. Этот практический опыт улучшит ваши навыки веб-перечисления (web enumeration), которые крайне важны для тестирования на проникновение и оценки безопасности.
Понимание назначения режима fuzz и ключевого слова FUZZ
На этом шаге вы узнаете о режиме fuzz в Gobuster и значении ключевого слова FUZZ. В отличие от режима dir, который в основном осуществляет перебор имен директорий и файлов, режим fuzz позволяет внедрять полезные нагрузки (payloads) в произвольные позиции внутри URL. Ключевое слово FUZZ действует как заполнитель, куда Gobuster будет вставлять каждую запись из предоставленного вами списка слов (wordlist). Эта гибкость позволяет тестировать различные части URL, такие как сегменты пути, расширения файлов или даже параметры запроса, на предмет скрытого контента или уязвимостей.
Например, если вы хотите обнаружить скрытые директории по адресу http://localhost:8000/, вы будете использовать URL вида http://localhost:8000/FUZZ. Gobuster затем заменит FUZZ каждым словом из вашего списка слов.
Давайте проверим, установлен ли Gobuster и доступен ли он в вашей среде.
gobuster version
Вы должны увидеть вывод, похожий на следующий, указывающий версию Gobuster.
Gobuster v3.x.x
Создание URL с ключевым словом FUZZ в пути
На этом шаге вы создадите целевой URL, включающий ключевое слово FUZZ. Это ключевое слово указывает Gobuster, куда вставлять записи из списка слов (wordlist) в процессе фаззинга. Для этой лабораторной работы мы будем нацеливаться на простой HTTP-сервер, работающий локально на порту 8000. Мы поместим ключевое слово FUZZ в сегмент пути, чтобы обнаружить скрытые директории или файлы.
Базовый синтаксис для gobuster fuzz выглядит так: gobuster fuzz -u <URL_с_FUZZ> -w <список_слов>.
Определим базовый URL для нашего целевого сервера. Сервер работает по адресу http://localhost:8000. Мы хотим обнаружить скрытые пути непосредственно под корневым каталогом, поэтому наш URL для фаззинга будет http://localhost:8000/FUZZ.
Вы можете попробовать получить доступ к базовому URL, чтобы подтвердить, что сервер запущен:
curl http://localhost:8000/
Вы должны увидеть содержимое файла index.html:
Hello from index.html
Теперь подготовим структуру команды. Мы пока не будем ее выполнять, но убедимся, что URL сформирован правильно.
echo "The fuzzed URL will be: http://localhost:8000/FUZZ"
Эта команда просто выводит строку URL, подтверждая ваше понимание того, как разместить ключевое слово FUZZ.
Использование флага -w для предоставления списка слов (payload wordlist)
На этом шаге вы узнаете, как указать список слов (wordlist) для использования Gobuster в процессе фаззинга. Флаг -w используется для указания пути к вашему файлу со списком слов. Каждая строка в этом файле будет использоваться для замены ключевого слова FUZZ в вашем целевом URL.
Для этой лабораторной работы в вашем каталоге ~/project на этапе настройки был создан простой список слов под названием fuzz_wordlist.txt. Этот список слов содержит несколько записей, соответствующих существующим и несуществующим путям на нашем тестовом веб-сервере.
Давайте посмотрим содержимое списка слов, чтобы понять, какие полезные нагрузки (payloads) будут использоваться:
cat ~/project/fuzz_wordlist.txt
Вы должны увидеть следующее содержимое:
secret_dir
admin_panel
test_page.html
nonexistent
Теперь вы знаете, какие полезные нагрузки будет пробовать Gobuster. Когда мы выполним сканирование, Gobuster попытается получить доступ к URL, таким как http://localhost:8000/secret_dir, http://localhost:8000/admin_panel и так далее.
Выполнение сканирования gobuster fuzz
На этом шаге вы объедините все предыдущие знания для выполнения сканирования gobuster fuzz. Вы будете использовать URL с подстановкой FUZZ, созданный на Шаге 2, и список слов, указанный на Шаге 3.
Полная команда будет выглядеть так:
gobuster fuzz -u http://localhost:8000/FUZZ -w ~/project/fuzz_wordlist.txt
Разберем команду:
gobuster fuzz: Запускает Gobuster в режиме фаззинга.-u http://localhost:8000/FUZZ: Указывает целевой URL с плейсхолдеромFUZZ.-w ~/project/fuzz_wordlist.txt: Предоставляет путь к списку слов, содержащему полезные нагрузки (payloads).
Теперь выполните команду в вашем терминале:
gobuster fuzz -u http://localhost:8000/FUZZ -w ~/project/fuzz_wordlist.txt
Вы увидите, как Gobuster перебирает список слов и сообщает коды состояния для каждой попытки.
===============================================================
Gobuster v3.x.x
===============================================================
[+] Url: http://localhost:8000/FUZZ
[+] Wordlist: /home/labex/project/fuzz_wordlist.txt
[+] Threads: 10
[+] Timeout: 10s
===============================================================
2024/01/01 12:00:00 Starting gobuster in fuzz mode
===============================================================
http://localhost:8000/secret_dir (Status: 200)
http://localhost:8000/admin_panel (Status: 200)
http://localhost:8000/test_page.html (Status: 200)
http://localhost:8000/nonexistent (Status: 404)
===============================================================
2024/01/01 12:00:00 Finished
===============================================================
Обратите внимание на (Status: 200) для secret_dir, admin_panel и test_page.html, что указывает на существование этих путей и успешный ответ. (Status: 404) для nonexistent указывает на то, что этот путь не был найден, как и ожидалось.
Анализ результатов гибкого фаззинга
На этом заключительном шаге вы проанализируете вывод сканирования gobuster fuzz, чтобы понять, что было обнаружено. Основная цель фаззинга — выявить действительные ответы (обычно коды состояния HTTP, такие как 200 OK, 301 Moved Permanently и т. д.), которые указывают на существование ресурса.
Из вывода предыдущего шага вы должны были увидеть строки, похожие на эти:
http://localhost:8000/secret_dir (Status: 200)
http://localhost:8000/admin_panel (Status: 200)
http://localhost:8000/test_page.html (Status: 200)
http://localhost:8000/nonexistent (Status: 404)
http://localhost:8000/secret_dir (Status: 200): Это указывает на то, что каталог с именемsecret_dirсуществует в корне веб-сервера. Вы можете попытаться получить к нему доступ с помощьюcurl:curl http://localhost:8000/secret_dir/hidden_file.txtВы должны увидеть:
Secret contenthttp://localhost:8000/admin_panel (Status: 200): Это предполагает существование каталогаadmin_panel.curl http://localhost:8000/admin_panel/login.phpВы должны увидеть:
Admin loginhttp://localhost:8000/test_page.html (Status: 200): Это указывает на существование файла с именемtest_page.html.curl http://localhost:8000/test_page.htmlВы должны увидеть:
Test pagehttp://localhost:8000/nonexistent (Status: 404): Это статус "Не найдено" (Not Found), который ожидается для несуществующего пути. Это помогает подтвердить, что Gobuster правильно идентифицирует несуществующие ресурсы.
Анализируя коды состояния, вы можете эффективно выявлять скрытые каталоги, файлы или другие ресурсы, которые могут быть не связаны напрямую с основным веб-сайтом. Это важный шаг в разведке (reconnaissance) при оценке безопасности.
Резюме
В этой лабораторной работе вы успешно научились использовать режим гибкого фаззинга в Gobuster. Вы поняли роль ключевого слова FUZZ как плейсхолдера для внедрения полезных нагрузок (payloads) из списка слов. Вы сконструировали URL с подстановкой, предоставили пользовательский список слов, выполнили сканирование gobuster fuzz и проанализировали результаты для выявления существующих веб-ресурсов. Этот практический опыт продемонстрировал мощь и универсальность возможностей фаззинга Gobuster для перечисления веб-ресурсов, что является фундаментальным навыком в кибербезопасности и тестировании на проникновение. Теперь вы можете применять эти методы для обнаружения скрытого контента на различных веб-приложениях.
