Введение
В этой лабораторной работе вы получите практический опыт в выявлении и устранении распространенных ошибок подключения, которые могут возникнуть при использовании Gobuster, мощного инструмента для перебора каталогов и файлов. Понимание этих ошибок имеет решающее значение для эффективной веб-перечислимости и тестирования на проникновение. Вы будете моделировать различные сетевые сценарии, наблюдать за поведением Gobuster и учиться интерпретировать его сообщения об ошибках для корректировки стратегии сканирования. Этот практический подход вооружит вас навыками для эффективного устранения неполадок с Gobuster в реальных сценариях.
Имитация ошибки "Connection Refused" путем нацеливания на закрытый порт
На этом шаге вы имитируете ошибку "Connection Refused" (отказ в соединении). Эта ошибка обычно возникает, когда Gobuster пытается подключиться к целевому хосту и порту, но на этом порту не прослушивается никакой сервис или брандмауэр активно отклоняет соединение. Вы будете использовать несуществующий порт на обычном веб-сайте, чтобы вызвать эту ошибку.
Откройте терминал и выполните следующую команду gobuster. Мы нацелимся на example.com на высоком, маловероятном для открытия порту (например, 65530), чтобы гарантировать ошибку отказа в соединении. Мы также будем использовать небольшой список слов, чтобы быстро увидеть ошибку.
gobuster dir -u http://example.com:65530 -w /usr/share/wordlists/dirb/common.txt -t 1 -k -q
-u http://example.com:65530: Указывает целевой URL с закрытым портом.-w /usr/share/wordlists/dirb/common.txt: Использует небольшой, распространенный список слов.-t 1: Устанавливает количество одновременных потоков равным 1, чтобы ошибка была более очевидной.-k: Пропускает проверку SSL-сертификата (здесь не строго необходимо, но является хорошей практикой для общего веб-сканирования).-q: Подавляет вывод баннера и прогресса, фокусируясь на ошибках.
Вы должны увидеть вывод, похожий на этот, указывающий на ошибки отказа в соединении:
[!] Could not connect to http://example.com:65530: dial tcp XX.XX.XX.XX:65530: connect: connection refused
Этот вывод ясно показывает, что Gobuster не смог установить соединение, поскольку оно было активно отклонено целью.
Имитация ошибки "Timeout" путем нацеливания на медленный сервер с низким значением --timeout
На этом шаге вы имитируете ошибку "Timeout" (тайм-аут). Тайм-аут происходит, когда Gobuster пытается подключиться к серверу или отправить/получить данные, но операция занимает больше времени, чем указанный период тайм-аута. Это может произойти с медленными серверами, при перегрузке сети или когда сервер намеренно задерживает ответы. Вы будете использовать общедоступный конечный пункт "медленного сервера" и установите очень низкое значение тайм-аута, чтобы вызвать эту ошибку.
Выполните следующую команду gobuster. Мы нацелимся на http://slowwly.robertomurray.co.uk/delay/1000/url/http://www.google.com, который вводит задержку в 1 секунду, и установим тайм-аут gobuster в 500ms (0,5 секунды).
gobuster dir -u http://slowwly.robertomurray.co.uk/delay/1000/url/http://www.google.com -w /usr/share/wordlists/dirb/common.txt -t 1 --timeout 500ms -k -q
-u http://slowwly.robertomurray.co.uk/delay/1000/url/http://www.google.com: URL, который вводит задержку.--timeout 500ms: Устанавливает тайм-аут соединения на 500 миллисекунд. Поскольку сервер задерживает ответ на 1000 мс, это вызовет тайм-аут.
Вы должны увидеть вывод, похожий на этот, указывающий на ошибки тайм-аута:
[!] Could not connect to http://slowwly.robertomurray.co.uk/delay/1000/url/http://www.google.com: Get "http://slowwly.robertomurray.co.uk/delay/1000/url/http://www.google.com/admin": context deadline exceeded (Client.Timeout exceeded while awaiting headers)
Это показывает, что попытка соединения Gobuster истекла по времени до получения ответа.
Понимание ошибок DNS путем нацеливания на несуществующий домен
На этом шаге вы столкнетесь с ошибкой DNS. Этот тип ошибки возникает, когда Gobuster не может разрешить имя хоста целевого URL в IP-адрес. Обычно это происходит, если доменное имя написано с ошибкой, не существует или есть проблемы с вашим DNS-резолвером.
Выполните следующую команду gobuster, нацеливаясь на явно несуществующий домен, такой как nonexistentdomain12345.com.
gobuster dir -u http://nonexistentdomain12345.com -w /usr/share/wordlists/dirb/common.txt -t 1 -k -q
-u http://nonexistentdomain12345.com: Нацеливается на домен, который не должен разрешаться.
Вы должны увидеть вывод, похожий на этот, указывающий на сбой поиска DNS:
[!] Could not connect to http://nonexistentdomain12345.com: dial tcp: lookup nonexistentdomain12345.com: no such host
Это сообщение об ошибке no such host (нет такого хоста) ясно указывает на то, что доменное имя не могло быть разрешено системой DNS.
Использование флага --no-error для подавления этих сообщений
На этом шаге вы узнаете, как использовать флаг --no-error в Gobuster. Хотя понимание ошибок важно для устранения неполадок, иногда может потребоваться подавить подробные сообщения об ошибках, особенно во время больших сканирований, где ожидаются некоторые проблемы с подключением, и вас интересуют только успешные находки. Флаг --no-error указывает Gobuster не выводить ошибки подключения.
Давайте повторно выполним команду из Шага 1, но на этот раз добавим флаг --no-error.
gobuster dir -u http://example.com:65530 -w /usr/share/wordlists/dirb/common.txt -t 1 -k -q --no-error
Обратите внимание, что, хотя подключение по-прежнему отклоняется, Gobuster не будет выводить сообщения [!] Could not connect... в консоль. Вывод будет намного чище, потенциально показывая только успешные находки (если таковые имеются, что маловероятно для закрытого порта) или просто итоговое резюме.
## Сообщения об ошибках, связанных с отказом в подключении, отображаться не будут.
Этот флаг полезен, когда вы хотите сосредоточиться исключительно на успешных результатах вашего сканирования, не перегружаясь журналами ошибок подключения.
Научитесь интерпретировать ошибки для корректировки параметров сканирования
На этом шаге вы закрепите понимание того, как интерпретировать ошибки Gobuster и использовать эти знания для корректировки параметров сканирования с целью получения более эффективных результатов. Ключевой вывод заключается в том, что различные ошибки предполагают различные решения.
- "Connection Refused" (Отказано в подключении): Это часто означает, что служба не запущена на этом порту, брандмауэр блокирует доступ или хост недоступен.
- Действие: Дважды проверьте целевой URL и порт. Если вы уверены, что служба должна быть там, изучите правила брандмауэра или сетевое соединение. Возможно, вам потребуется перейти на другой порт или целевой хост.
- "Timeout" (Тайм-аут): Это указывает на то, что сервер работает медленно, сетевая задержка высока или сервер намеренно задерживает ответы.
- Действие: Увеличьте значение
--timeout(например,--timeout 5s). Вы также можете рассмотреть возможность уменьшения количества потоков (-t), чтобы снизить нагрузку на целевой хост или вашу сеть.
- Действие: Увеличьте значение
- "No such host" (DNS Error) (Нет такого хоста) (Ошибка DNS): Доменное имя не может быть разрешено.
- Действие: Проверьте наличие опечаток в доменном имени. Проверьте настройки DNS или попробуйте использовать другой DNS-резолвер. Если домен действительно не существует, вы нацелились не туда.
Рассмотрим сценарий, когда вы сканируете целевой хост и часто сталкиваетесь с ошибками "Timeout". Исходя из полученных знаний, вы скорректируете свою команду, увеличив тайм-аут. Например, если ваша первоначальная команда была:
gobuster dir -u http://target.com -w /usr/share/wordlists/dirb/common.txt -t 20
И вы видите много тайм-аутов, вы измените ее на:
gobuster dir -u http://target.com -w /usr/share/wordlists/dirb/common.txt -t 10 --timeout 5s
Здесь вы уменьшили количество потоков до 10 и увеличили тайм-аут до 5 секунд, что, вероятно, повысит успешность ваших запросов к медленному серверу.
Этот итеративный процесс запуска Gobuster, наблюдения за ошибками и корректировки параметров является фундаментальным навыком для эффективной веб-перечислимости.
Резюме
В этой лабораторной работе вы успешно научились выявлять и устранять распространенные ошибки подключения Gobuster. Вы смоделировали ошибки "Connection Refused" (Отказано в подключении), "Timeout" (Тайм-аут) и DNS "No such host" (Нет такого хоста), понимая основные причины каждой из них. Вы также узнали, как подавлять сообщения об ошибках с помощью флага --no-error для более чистого вывода. Самое главное, вы получили представление о том, как интерпретировать эти ошибки для эффективной корректировки параметров сканирования Gobuster, таких как увеличение тайм-аута или проверка целевого URL, для повышения эффективности и успешности ваших усилий по веб-перечислимости. Эти практические знания бесценны для всех, кто занимается тестированием на проникновение в веб-приложения или охотой за ошибками (bug bounty hunting).
