GobusterЭто использованиеgoЯзык, написанный для сайтакаталог/файл、DNS-субрегион、виртуальный хоствхостИнструменты с открытым исходным кодом для извлечения методом грубой силы,Обычно используется в областях безопасности,На данный момент широко используемые методы взлома методом грубой силы (версия 3.6) включают следующее:
модель | значение |
---|---|
dir | Самый классический режим взлома пути к файлу/каталогу. |
dns | Режим взлома DNS-поддоменов. |
s3 | Enum открывает корзину S3 и находит существование и манифест корзины (для aws). |
gcs | Перечислите открытые сегменты Google Cloud Storage. |
vhost | Режим перечисления виртуального хоста (отличается от поддомена DNS). |
fuzz | Немного базового фаззинга, заменяющего режим ключевых слов FUZZ. |
tftp | Взлом файлов tftp методом грубой силы. |
В последнее время Gobuster использовался в некоторых сценариях.,Так что с таким же успехом я мог бы ковать железо, пока горячо, и написать эту статью как отстой.。Эта статья начнется с нескольких приведенных вышемодель Выберите наиболее распространенный и наиболее универсально применимыймодель:dir、dns、vhost、fuzzмодель Его использование подробно описано в,s3иgc3Применимо кawsиGoogle Облако(gcp)Некоторые сценарии использования ресурсов корзины,Подробное использование можно найти черезgobuster help <mode>
Приходите и посмотрите。
Сначала перечислим глобальные параметры, которые можно использовать во всех режимах.
параметр | значение |
---|---|
--debug | Включите режим отладки. |
--delay duration | Время ожидания каждого потока между запросами (например: |
--no-color | Отключить цветной вывод. |
--no-error | Никаких ошибок не отображается. |
-z|--no-progress | Никакого прогресса не видно. |
-o|--output string | Вывод результатов в файл. |
-p|--pattern string | Файл, содержащий шаблоны замены. |
-q|--quiet | Тихий режим, не печатает баннерную информацию и некоторую бесполезную информацию. |
-t|--threads int | Укажите количество потоков (по умолчанию 10). |
-v|--verbose | Подробный журнал вывода (также будет отображен код состояния 404). |
-w|--wordlist string | Укажите путь к словарю,обозначение |
--wordlist-offset int | Продолжить с указанной позиции в словаре (смещение по умолчанию равно 0, начиная с первой). |
Словарь является важным ключом. Достаточно мощный словарь может открыть больше возможностей. Если вы хотите создать словарь своими руками, для его создания рекомендуется использовать crunch. Известные в отрасли словари компилируются и собираются следующим образом.
Название проекта | Связь |
---|---|
Fuzzing-Dicts | |
weakpass | |
SecLists | |
Assetnote Wordlists | |
fuzzdb | |
PayloadsAllTheThings | |
samlists | |
Exploit-Dictionary |
-uпараметриспользуется дляобозначение ЦельURLадрес,Этот параметр должен быть выбран,В то же время используйте -w в глобальном параметре, чтобы указать словарь:
gobuster dir -u <URL> -w <wordlist>
Использовать 10 потоков по умолчанию,Картинка выше прошла-t 1Толькообозначение Одиннити。
Эффект от указания 64 потоков следующий:
Сравните общую ситуациюпараметрвнутри--quietи--debug:
gobuster dir -u <URL> -w <wordlist> -q
gobuster dir -u <URL> -w <wordlist> --debug
Как показано выше, если -q не указан, вывод по умолчанию по-прежнему представляет собой режим отладки, в котором будет отображаться целевой URL-адрес, метод HTTP, количество потоков, файл словаря, отрицательный код состояния (по умолчанию 404), информация UA, тайм-аут и т. д. .
Как видно из захвата пакета, gobuster объединяет полный URL-адрес в соответствии с содержимым пути в словаре для перечисления:
Поэтому убедитесь, что словарь достаточно мощный, и результатов может быть больше.
gobuster dir -u <URL> -w <wordlist> -c <cookie>
Это эквивалентно получению информации о состоянии входа в систему и последующему перечислению каталогов и файлов по URL-адресу.
По умолчанию отображается только путь к файлу,проходить-eпараметр Перечисленные каталоги могут быть дополнены полнымиURLпоказывать:
gobuster dir -u <URL> -w <wordlist> -e
Если вы не хотите получать его через файлы cookie, вы можете указать имя пользователя и пароль:
gobuster dir -u <URL> -w <wordlist> -e -U 'username' -P 'password'
С помощью захвата пакетов нетрудно обнаружить, что эти два параметра используют базовую аутентификацию. Если это не базовая аутентификация, она будет недействительной. Информация об учетной записи и пароле базовой аутентификации будет перенесена в заголовок HTTP:
Семиуровневые инструменты, такие как Curl и wget, также имеют те же параметры, игнорируя проблемы с сертификатами и не выполняя проверку доступности сертификата:
gobuster dir -k -u <URL> -H 'Host:<HOST>' -w <wordlist>
проходить-Hпараметробозначениеhttpголова,Вы можете имитировать любое поле заголовка HTTP, которое хотите отправить.
Например, укажите конкретный HOST:
gobuster dir -k -u <URL> -H 'Host:<HOST>' -w <wordlist> -t 1
Укажите несколько заголовков,Используйте несколько-Hразделение,Сравниватьнравитьсятакой жечасобозначениеHost、User-Agent、Connection:
gobuster dir -k -u <URL> -H 'Host:<Host>' -H 'User-Agent:Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/116.0.0.0 Safari/537.36' -H 'Connection:keep-alive' -w <wordlist>
конечноUser-AgentМожно и одномупроходить-a|----useragentПриходитьобозначение,gobuster предлагает этот параметр,По умолчанию:gobuster/3.6,Следующее число — это номер версии.
При поиске только php,использовать-x php,При поиске txt,нообозначение-x txt,И так далее.
Например, искать только файлы php.,показыватьвесьURL(-e),обозначение64нити(-t 64):
gobuster dir -u <URL> -x php -w <wordlist> -t 64 -e
Если необходимо выполнить поиск по нескольким расширениям, вы можете прочитать файл расширения, не указывая каждое из них вручную:
gobuster dir -u <URL> -X <extensions-file> -w <wordlist>
Если не указано, по умолчанию используется GET.,Если вам нужно указать другие методы HTTP,нопроходить-mобозначение,Например, указанный POST-запрос может быть:
gobuster dir -u <URL> -m POST -w <wordlist>
Не хочу раскрывать свой настоящий IP,Можно указать параметры прокси,поддерживатьHTTP/HTTPSактерское мастерство,илиsocks5актерское мастерство。
Формат::http(s)://host:port или socks5://host:port
Сравниватьнравитьсяобозначениеsocks5актерское мастерство Приходить扫描对方,Может быть:
gobuster dir -u <URL> -w <wordlist> --proxy <socks5://host:port>
проходитьсуществоватьkaliОбнаружение захвата клиентских пакетов,Клиент перенаправляет запрос на настроенный прокси-сервер.,Пусть он выполнит полное сканирование:
Поскольку весь процесс зашифрован, содержимое запроса невозможно увидеть напрямую.
Но нетрудно обнаружить, что сам клиент в течение всего процесса не будет напрямую запрашивать сканируемый целевой сервер:
существоватьTLS/SSLВ сценарии двусторонней аутентификации,Клиенту необходимо указать сертификат клиента при запросе сервера.,Вы можете использовать эту спецификацию параметра.
Укажите сертификат p12 как:
gobuster dir --client-cert-p12 <certfile> -w <wordlist> -u <URL>
Если сертификат p12 имеет пароль:
gobuster dir --client-cert-p12 <certfile> --client-cert-p12-password <certpasswordfile> -w <wordlist> -u <URL>
Таким же образом, указание сертификата pem:
gobuster dir --client-cert-pem <certfile> -w <wordlist> -u <URL>
Если у вас есть закрытый ключ сертификата pem:
gobuster dir --client-cert-pem <certfile> --client-cert-pem-key <keyfile> -w <wordlist> -u <URL>
Если есть требования к длине содержимого возвращаемого результата, вы можете указать ее с помощью этого параметра.
Например, исключите случай, когда длина содержимого равна 0 байтам:
gobuster dir -u <URL> -w <wordlist> --exclude-length 0
Давайте посмотрим на эффект отсутствия указания:
Очевидно, что возвращается много страниц с 0 байтами, в основном 301 редирект, и отображается перенаправленный URL-адрес.
Если вы хотите исключить результаты в определенном диапазоне размеров,проходить-字符Приходитьобозначение,Например, устранить0-100результат в байтах:
gobuster dir -u <URL> -w <wordlist> --exclude-length 0-100
Оба параметра принадлежат глобальному параметру,Нетрежим каталогауникальный,Но о них стоит поговорить отдельно при совместном использовании.
Если одноранговый сервер выполняет обработку ограничения частоты QPS,Тогда порог срабатывания может истечь и получить код состояния, который не соответствует ожиданиям.,Вы можете замедлить действие, указав количество потоков и время задержки.,Значение по умолчанию не указано,-tкаждый раз10нити,И времени задержки нет.
Например, каждый раз выполняйте 5 потоков, затем задерживайтесь на 10 секунд, прежде чем продолжить выполнение следующих 5 потоков:
gobuster dir -u <URL> -w <wordlist> -t 5 --delay 10s
По умолчанию значение этого параметра — 404, который представляет собой URL-адрес, созданный посредством перечисления по словарю. Если во время запроса получен код состояния 404, он не будет отображаться в результате. Поэтому на всех скриншотах выполнения gobuster, приведенных выше, его нет. Виден 404 результат кода состояния.
И если вы хотите увидеть процесс выполнения,Даже если страницу 404 придется вернуть,общая ситуациямодельиз-vпараметр Можно распечатать журналы в деталях:
gobuster dir -u <URL> -w <wordlist> -v
можно увидеть404Страница будетсуществоватьвысшая оценкадляMissed。
-bпараметр Что можно установитьHTTPКод состояния не отображается в результатах,Например, 401, 403, 404 и 501–504 не отображаются.,Может быть:
gobuster dir -u <URL> -w <wordlist> -b 401,403,404,501-504
Точно так же, если есть черный список, есть и белый список. Этот параметр используется для указания кода состояния, соответствующего условиям.
-sи-bвзаимоисключающие,невозможно установить одновременно(По умолчанию-bдля404),поэтомуиспользовать-sчас,-bДолжно быть установленодляпустая строка(-b ""
),В противном случае будет сообщено об ошибке:Error: error on parsing arguments: status-codes ("200") and status-codes-blacklist ("404") are both set - please set only one. status-codes-blacklist is set by default so you might want to disable it by supplying an empty string.
Поэтому, если вам нужен только результат кода состояния 200, вы можете написать:
gobuster dir -u <URL> -w <wordlist> -s 200 -b ""
Конечно, вы также можете указать несколько диапазонов одновременно.,нравиться:
-s 200,300-399,401 -b ""
-dпараметробозначение Цель域名,-wобозначениесловарь,В качестве примера возьмем официальный сайт k8s:
gobuster -d kubernetes.io -w <wordlist>
Как видно из захвата пакета, gobuster заполняет записи в словаре в указанное доменное имя, чтобы сформировать имя поддомена, и снова и снова инициирует запросы к DNS-серверу, чтобы выполнить исчерпание DNS:
Если вы не хотите использовать DNS по умолчанию, настроенный системой, или изменять конфигурацию DNS системы, то -r может произвольно указать DNS-сервер для разрешения:
Например, укажите общедоступный DNS Tencent Cloud: 119.29.29.29, чтобы перечислить имена субдоменов CNCF:
gobuster dns -d cncf.io -r 119.29.29.29 -w <wordlist>
По умолчанию запрашивается порт DNS-сервера 53. Если это порт не по умолчанию, просто укажите порт.
Например, запросите верхний порт 25533 DNS интрасети для перечисления имени поддомена официального сайта Grafana и укажите время задержки каждого потока как 1,5 с:
gobuster dns -d grafana.com -r 192.168.1.72:25533 -w <wordlist> --delay 1500ms
Если вы хотите вывести записи псевдонимов,но Может以использовать-cпараметр:
gobuster dns -c -d <domain> -w <wordlist>
Если вы хотите узнать записи разрешения, соответствующие каждому перечисляемому доменному имени.,Можетиспользовать-iпараметр,В качестве примера возьмем перечисление официального сайта gentoo:
gobuster dns -d gentoo.org -w <wordlist> -i
Если не установлено, тайм-аут по умолчанию составляет 1 с.,проходить--timeoutМожет以обозначение,Сравниватьнравитьсяобозначениедогонятьчасчасмеждудля0.5sМожет быть:
gobuster dns -d <domain> -w <wordlist> --timeout 0.5s
Если имя поддомена целевого доменного имени является доменным именем с подстановочными знаками, форма выглядит следующим образом: *.domain.com,Затем имя поддомена заносится в словарь.,Что бы это ни было, оно может вернуть проанализированную запись.,Например, официальный сайт github:
Как показано выше, после выполнения gobuster он сообщит, что почти каждое доменное имя возвращает один и тот же результат записи A, который также можно проверить с помощью dig.
этотчаснасобозначение--wildcardпараметр,wildcard дословно переводится как wildcard,Позвольте gobuster продолжать принудительно выполнять выполнение, когда он встречает доменное имя с подстановочными знаками.,Но будут возвращены только доменные имена, результаты парсинга которых отличаются от доменных имен с подстановочными знаками (это логическое суждение верно).,В противном случае каждое поле словаря может разобрать адрес, что не имеет смысла):
gobuster dns -d <domain> -w <wordlist> --wildcard
Uses fuzzing mode. Replaces the keyword FUZZ in the URL, Headers and the request body.
Как указано в справочной документации, fuzzmodel может заменить ключевое слово FUZZ в заголовке URLилиHTTP и теле запроса:
Это может быть немного абстрактно. Вы можете понять, что пока созданный URL-адрес запроса, HTTP-заголовок и тело отправленного запроса смешаны с фаззом, вы можете ввести переменную fuzz. Значение переменной fuzz берется из содержимого словаря. и заменяется один за другим в переменной fuzz.
Например, перечисление параметров URL-адреса можно записать так:
http://example.com/profile?user=FUZZ
Другой пример — перечисление определенного поля в HTTP-заголовке, например перечисление информации UA:
-H 'User-Agent: FUZZ'
Помимо вышеперечисленных функций,другойпараметр Всеиdirмодельточное совпадение,Вот лишь два примера наиболее распространенных ситуаций:,При необходимости с помощью Fuzz можно создать любые другие сложные сценарии.
Например, перечислите фиксированный URL-адрес и выполните исчерпывающий перечисление, введя содержимое поля в словарь параметров:
gobuster fuzz -u domain/?userid=FUZZ -w <wordlist>
gobuster заменяет содержимое файла словаря в заполнитель FUZZ одно за другим по запросу.
Передайте информацию в файл словаря UA и замените ее заполнителем FUZZ:
gobuster fuzz -H 'User-Agent: FUZZ' -w <wordlist> -u http://192.168.1.72:8080
С помощью захвата пакетов также можно обнаружить, что информация UA в HTTP-заголовке будет подставлена одна за другой из файла словаря:
Если вы хотите узнать соответствующие имена доменов служб/виртуальные хосты для IP-адреса назначения.,vhostочень полезно,Особенно после получения списка имен поддоменов через DNSмодель.,Вы можете попытаться определить, существуют ли эти службы поддоменов выше, с помощью IP-адресов с разным разрешением.
большинство из нихпараметрирежим каталогауниверсалениз,Тот же способ использования,Поэтому мы не будем повторять их снова.,Ниже приведены некоторые из наиболее классических сцен.
URL-адрес записывается в форме IP,Имя хоста хранится в словаре,-kНе выполненоTLS/SSLПроверка сертификата:
gobuster vhost -u <URL> -w <wordlist> -k
Этот параметр преобразует содержимое словаря,Добавить в URL перед HOST,СравниватьнравитьсяURLдля:https://domain.com,Чтение содержимого словаря (например, a, b, c),После заполненияизHOSTдля:a.domain.com、b.domain.com、c.domain.com。
Если URL-адрес имеет форму IPилиIP:PORT,Тогда он все равно будет добавлен спереди,Сравниватьнравиться:
a.192.168.1.72:8080
、a.192.168.1.1
。
Например, если указанный URL-адрес уже имеет форму основного имени домена, а для перечисления виртуальных хостов указан словарь имен субдоменов subdomain.txt, это может быть:
gobuster vhost -u <URL> -w subdomain.txt -k --append-domain --timeout 1s --retry --retry-attempts 1
Это следует отличать от перечисления DNS-субрегион.,Он не включает запросы разрешения DNS.,vhostмодель会对组合出ПриходитьизвсеHOSTВсе отправлено по умолчаниюHTTP GETпросить,Другие методы HTTP,проходить-mпараметробозначение即Может,Сравниватьнравиться-m POST。
Потому что вам нужно отправить HTTP/HTTPS-запрос партнеру.,Не желая раскрывать себя,Прокси можно использовать,ирежим каталогаТакой же,Поддержка HTTP/HTTPS/socks5-прокси,Возьмем прокси-сервер Socks5 в качестве примера:
gobuster vhost -u <URL> -k -w <wordlist> --proxy <socks5://host:port>
Подделка информации UA, улучшение сокрытия реальной информации и вмешательство в журналы доступа другой стороны:
gobuster vhost -u <URL> -w <wordlist> --random-agent -t 64 # -t указывает количество потоков
Как показано на рисунке выше, для клиента MacOS и браузера Chrome создается ложная информация UA.
实际上也Может以проходить-Hпараметр ИсточникHTTPголовапараметрвнутриобозначение,ссылкарежим каталогаиз-H。
Указав этот параметр, мы можем подделать любую информацию UA, которую хотим подделать. Например, подделка ее в качестве бота Google может быть:
gobuster vhost -u <URL> -w <wordlist> -a "Googlebot/2.1 ( http://www.googlebot.com/bot.html)"
Gobusterделатьдлявеб-безопасность、Зона проникновенияиз Один из настольных инструментов,Его функции всеобъемлющие и мощные.,Поддержка многопоточных запросов с высокой степенью одновременности,Обычно используется для обнаружения скрытых каталогов и файлов в веб-приложениях.,и для поддоменов、виртуальный хоствхост и другие сценарии, такие как принудительное перечисление.
В то же время различия в выборе параметров и поведении в разных сценариях были проанализированы посредством захвата пакетов. Выбор подходящего файла словаря может существенно повлиять на эффективность и успешность сканирования. В этой статье также собраны словари, хорошо известные в отрасли и охватывающие различные сценарии. Их можно использовать в качестве справочного материала для создания словаря, который лучше соответствует потребностям. в соответствии с реальной ситуацией.
в общем,Gobuster是渗透测试工具箱中不Может或缺изчасть,Это помогает тестерам на проникновение выявлять потенциальные уязвимости и риски безопасности в веб-приложениях.
Поставляется с PDF-версией:
ЯсуществоватьучаствоватьВторой этап специального тренировочного лагеря Tencent Technology Creation 2023 года включает в себя эссе, получившие призы, которые разделят призовой фонд в 10 000 юаней и часы с клавиатурой.