Введение
При тестировании на проникновение веб-приложений или аудите безопасности часто встречаются области веб-сайта, доступные только после аутентификации пользователя. Стандартные инструменты сканирования каталогов, такие как Gobuster, могут пропустить эти скрытые пути, поскольку они не поддерживают сессию. Эта лабораторная работа проведет вас через процесс использования функциональности cookie Gobuster для выполнения аутентифицированных сканирований каталогов. Вы узнаете, как получить cookie сессии из веб-приложения, а затем использовать этот cookie с Gobuster для обнаружения каталогов и файлов в аутентифицированных разделах, что обеспечит более полное представление о поверхности атаки приложения.
Вход в веб-приложение и получение cookie сессии
На этом шаге вы имитируете вход в веб-приложение и захватите cookie сессии, который устанавливается после успешной аутентификации. Этот cookie имеет решающее значение для доступа Gobuster к аутентифицированным областям. Мы будем использовать curl для выполнения входа и извлечения cookie.
Сначала попробуем получить доступ к панели управления без аутентификации, чтобы увидеть, что нас перенаправляет:
curl -v http://localhost:8080/dashboard
Вы должны увидеть перенаправление 302 Found обратно на /. Теперь давайте войдем в систему. Веб-приложение имеет простую форму входа по адресу http://localhost:8080/ с именем пользователя user и паролем password. Мы отправим POST-запрос на /login с этими учетными данными.
curl -v -X POST -d "username=user&password=password" http://localhost:8080/login
В выводе найдите заголовок Set-Cookie. Он должен выглядеть примерно так: Set-Cookie: session=authenticated_session_id_12345; Path=/. Значение authenticated_session_id_12345 — это ваш cookie сессии. Запишите это значение.
Теперь попробуем получить доступ к панели управления, используя полученный cookie. Замените YOUR_COOKIE_VALUE фактическим значением cookie, которое вы нашли.
curl -v --cookie "session=authenticated_session_id_12345" http://localhost:8080/dashboard
Теперь вы должны увидеть содержимое страницы панели управления, что указывает на успешный аутентифицированный доступ.
Создание команды gobuster dir для аутентифицированной области
На этом шаге мы подготовим базовую команду gobuster dir. Мы нацелимся на аутентифицированную область веб-приложения. Базовым URL для нашего аутентифицированного сканирования будет http://localhost:8080/authenticated/. Мы будем использовать распространенный список слов для перебора каталогов.
Сначала убедимся, что Gobuster установлен.
gobuster version
Вы должны увидеть информацию о версии. Если нет, обратитесь к разделу настройки.
Теперь давайте составим базовую команду gobuster dir. Мы будем использовать флаг -u для URL и -w для списка слов. Для этой лабораторной работы мы будем использовать небольшой встроенный список слов для демонстрации, или вы можете указать распространенный, такой как common.txt, если он доступен в вашей системе. Если common.txt не найден, вы можете создать небольшой пользовательский список слов для тестирования.
Создадим небольшой список слов для этой лабораторной работы:
echo -e "secret_dir\nadmin\nconfig\nbackup\nusers" > ~/project/wordlist.txt
Теперь базовая команда без cookie будет выглядеть так:
gobuster dir -u http://localhost:8080/authenticated/ -w ~/project/wordlist.txt
Если вы запустите эту команду сейчас, она, скорее всего, не найдет secret_dir, потому что для доступа к нему требуется аутентификация. На следующем шаге мы добавим cookie к этой команде.
Использование флага -c для предоставления cookie сессии
На этом шаге вы интегрируете cookie сессии, полученный на Шаге 1, в вашу команду Gobuster с помощью флага -c. Этот флаг позволяет Gobuster включать указанный cookie в свои запросы, что дает ему возможность получать доступ к аутентифицированным областям.
Вспомните значение cookie, которое вы получили на Шаге 1, а именно session=authenticated_session_id_12345.
Флаг -c ожидает cookie в формате ключ=значение. Таким образом, наша строка cookie будет "session=authenticated_session_id_12345".
Теперь объедините это с командой из Шага 2:
gobuster dir -u http://localhost:8080/authenticated/ -w ~/project/wordlist.txt -c "session=authenticated_session_id_12345"
Эта команда указывает Gobuster выполнить сканирование каталогов по адресу http://localhost:8080/authenticated/, используя предоставленный список слов, и, что крайне важно, включая cookie session=authenticated_session_id_12345 в каждый запрос. Это позволит Gobuster обойти барьер аутентификации и обнаружить ресурсы в защищенной области.
Перед выполнением дважды проверьте правильность значения вашего cookie.
Выполнение сканирования
Теперь, когда вы составили полную команду Gobuster, пришло время выполнить ее и наблюдать за результатами. Это сканирование попытается найти каталоги и файлы в аутентифицированной части веб-приложения.
Выполните команду, которую вы подготовили на предыдущем шаге:
gobuster dir -u http://localhost:8080/authenticated/ -w ~/project/wordlist.txt -c "session=authenticated_session_id_12345"
Gobuster начнет сканирование и отобразит его прогресс. Обратите пристальное внимание на вывод. Вы должны увидеть записи, указывающие на найденные каталоги или файлы со статусом Status: 200 (OK), Status: 301 (Перемещено навсегда) или Status: 302 (Найдено), что означает успешный доступ к ресурсу или перенаправление.
Пример вывода:
===============================================================
Gobuster vX.X.X
===============================================================
[+] Url: http://localhost:8080/authenticated/
[+] Wordlist: /home/labex/project/wordlist.txt
[+] Threads: 10
[+] Timeout: 10s
[+] User Agent: gobuster/X.X.X
[+] Cookies: session=authenticated_session_id_12345
===============================================================
2024/01/01 12:00:00 Starting gobuster in directory enumeration mode
===============================================================
/secret_dir (Status: 200) [Size: 100]
===============================================================
2024/01/01 12:00:05 Finished
===============================================================
Обратите внимание, как /secret_dir найден со статусом Status: 200. Это указывает на то, что Gobuster успешно получил доступ к этому каталогу, поскольку он отправлял cookie аутентификации. Без cookie этот каталог, скорее всего, не был бы найден или вернул бы статус перенаправления/неавторизован.
Анализ результатов для поиска страниц, доступных только при аутентификации
На этом заключительном шаге вы проанализируете вывод вашего сканирования Gobuster, чтобы выявить ресурсы, которые были успешно обнаружены в аутентифицированной области. Ключевым моментом является поиск записей, которые вернули Status: 200 (OK) или другие коды успеха, которые обычно были бы недоступны без cookie сессии.
Из вывода предыдущего шага вы должны были увидеть что-то похожее на:
/secret_dir (Status: 200) [Size: 100]
Эта строка указывает на то, что Gobuster успешно обнаружил путь /secret_dir по URL http://localhost:8080/authenticated/, и он вернул статус HTTP 200 OK. Это является сильным индикатором того, что этот каталог доступен при аутентификации.
Для подтверждения вы можете попытаться получить доступ к этому пути напрямую с помощью curl без cookie:
curl http://localhost:8080/authenticated/secret_dir
Вы должны быть перенаправлены на страницу входа или получить сообщение о неавторизованном доступе.
Теперь попробуйте получить доступ к нему с cookie:
curl --cookie "session=authenticated_session_id_12345" http://localhost:8080/authenticated/secret_dir/hidden_file.html
Вы должны увидеть содержимое hidden_file.html, что подтверждает, что этот путь действительно доступен только с правильным cookie аутентификации.
Этот процесс демонстрирует, как использование cookie с Gobuster может раскрыть скрытые части веб-приложения, которые видны только аутентифицированным пользователям, значительно расширяя область вашей оценки безопасности.
Резюме
В этой лабораторной работе вы успешно научились выполнять аутентифицированные сканирования каталогов с помощью Gobuster. Вы начали с входа в симулированное веб-приложение и извлечения cookie сессии. Затем вы составили команду Gobuster, которая включала этот cookie с помощью флага -c. Выполнив эту команду, вы смогли обнаружить скрытый каталог (/secret_dir), который был доступен только аутентифицированным пользователям. Этот метод неоценим для специалистов по безопасности и разработчиков, которым необходимо тщательно проверять веб-приложения, гарантируя, что все доступные пути, даже те, которые находятся за аутентификацией, правильно идентифицированы и защищены.
