D2
Администратор
- Регистрация
- 19 Фев 2025
- Сообщения
- 4,380
- Реакции
- 0
Автор petrinh1988
Источник https://xss.is
Какими бы хорошими сканерами не обладал Burp, есть огромная куча инструментов, которые лучше выполняют точечные задачи или позволяют развить атаку. Например, в Burp нет и десятой доли мощи от того же sqlmap. Поэтому, в сообществе появилось соответствующее расширение, которое позволяет интегрировать sqlmap в Burp. Но есть и другие специализированные инструменты, которые было бы неплохо научиться встраивать в инфраструктуру Burp, Один из них, gobuster. В этой статье займемся частичной интеграцией. Почему частичной? Потому что по аналогии вы сможете самостоятельно расширить интеграцию, добавляя однотипные функции. В ином случае, получится полотнище из серии “то да потому”, без смысловой нагрузки.
В этой статье, мы научимся запускать сторонние утилиты и обрабатывать их вывод в рамках расширения Burp. Для примера приведу два варианта запуска. Один из которых нужен скорее для примера, а может быть кому-то подойдет, как база для доведения до идеала. Кроме того, построим интерфейс на базе закладок, а также познакомимся с другими элементами интерфейса, например, выбором файлов. Но главное, для построения интерфейса будем использовать Apache NetBeans 22. Это бесплатная IDE для разработки на Java, которая поможет быстро и удобно собрать нужные формы в конструкторе, а после выгрузить их в виде кода. Тем самым, сильно сократив время разработки и почти полностью исключив ад)))
Для понимания. Чтобы находить виртуальные хосты при помощи ffuf, строка запуска будет выглядеть примерно так ffuf -w /path/to/vhost/wordlist -u https://target -H "Host: FUZZ.target".
Ну или на примере библиотеки requests Python:
Python: Скопировать в буфер обмена
Подобный запрос спокойно получает ответ от поддомена, но получит ошибку “Failed to resolve 'subdomain.example.com' ([Errno 11001] getaddrinfo failed)” если речь идет о виртуальном хосте. К vhost получится обратиться подобным способом:
Python: Скопировать в буфер обмена
Подобный подход позволяет владельцам ресурсов скрывать чувствительные поддомены от прямого фаззинга или индексации поисковыми роботами. В обоих случаях, в ответ прилетит ошибка. Бывает, что владелец сайта просто снес DNS-запись на поддомен, считая, что он теперь недоступен. В любом случае, это еще один возможный вектор атаки.
Соответственно, у gobuster есть специальный режим поиска vhost, запускается следующим образом:
Bash: Скопировать в буфер обмена
Спойлер: Список аргументов
Bash: Скопировать в буфер обмена
Соответственно, под параметры потребуются разные компоненты Java.Swing. Где-то текстовая строка, например, для указания имени пользователя и пароля. Где-то флажок, например, для -follow-redirect. Выпадающий список для выбора типа запроса (GET, POST, etc.). Окно выбора файла для словаря или сертификата. Прогрессбар для отслеживания статуса процесса. В общем, будет с чем потренироваться. Сам интерфейс реализуем на базе Tab-ов, чтобы не возникло заморочек, если захотите расширить возможности расширения.
Стартовый URL предлагаю задавать, как просто вводом текста, так и через контекстное меню. Например, зашел пользователь в Target и кликнул на карте сайта “Искать vhosts”. Для пользования удобно и нам лишняя тренировка.
Что касается получения результатов. Хотелось бы, чтобы все происходило интерактивно и найденные виртуальные хосты, сразу добавлялись на карту сайта. С этой целью, будет считывать вывод gobuster. Примерно такой принцип работы: пользователь указал все настройки и нажал кнопку “начать сканирование”. Приложение поменяло свое состояние. С этого момента, слушаем поток вывода данных и поток ошибок. Каждую строку анализируем регулярными выражениями. Если нашли новый поддомен и у него подходящий код ответа, то вызываем метод добавления на карту сайта.
На мой взгляд, задача достаточно интересная и набор приобретаемых навыков крайне полезный. На выходе получим уже второе полноценное решение (или третье?).
Как и писал выше, интерфейс будем собирать в Apache NetBeans. Скачать
Источник https://xss.is
Какими бы хорошими сканерами не обладал Burp, есть огромная куча инструментов, которые лучше выполняют точечные задачи или позволяют развить атаку. Например, в Burp нет и десятой доли мощи от того же sqlmap. Поэтому, в сообществе появилось соответствующее расширение, которое позволяет интегрировать sqlmap в Burp. Но есть и другие специализированные инструменты, которые было бы неплохо научиться встраивать в инфраструктуру Burp, Один из них, gobuster. В этой статье займемся частичной интеграцией. Почему частичной? Потому что по аналогии вы сможете самостоятельно расширить интеграцию, добавляя однотипные функции. В ином случае, получится полотнище из серии “то да потому”, без смысловой нагрузки.
В этой статье, мы научимся запускать сторонние утилиты и обрабатывать их вывод в рамках расширения Burp. Для примера приведу два варианта запуска. Один из которых нужен скорее для примера, а может быть кому-то подойдет, как база для доведения до идеала. Кроме того, построим интерфейс на базе закладок, а также познакомимся с другими элементами интерфейса, например, выбором файлов. Но главное, для построения интерфейса будем использовать Apache NetBeans 22. Это бесплатная IDE для разработки на Java, которая поможет быстро и удобно собрать нужные формы в конструкторе, а после выгрузить их в виде кода. Тем самым, сильно сократив время разработки и почти полностью исключив ад)))
Vhost vs Subdomain?
По сути, под vhost я буду подразумевать субдомен, не имеющий DNS-записи. Не получится зайти на него в браузере используя URL типа http://VHOST.domain.com, так как общедоступный DNS не знает IP-адрес связанный с этим хостом. Хотя, по факту, сам виртуальный хост существует и мы можем обратиться к нему по прямому IP или через домен, указав правильный заголовом Host.Для понимания. Чтобы находить виртуальные хосты при помощи ffuf, строка запуска будет выглядеть примерно так ffuf -w /path/to/vhost/wordlist -u https://target -H "Host: FUZZ.target".
Ну или на примере библиотеки requests Python:
Python: Скопировать в буфер обмена
Код:
import requests
response = requests.get('https://subdomain.example.com/')
Подобный запрос спокойно получает ответ от поддомена, но получит ошибку “Failed to resolve 'subdomain.example.com' ([Errno 11001] getaddrinfo failed)” если речь идет о виртуальном хосте. К vhost получится обратиться подобным способом:
Python: Скопировать в буфер обмена
Код:
import requests
response = requests.get('https://example.com/', headers={'Host': 'subdomain.example.com'})
Подобный подход позволяет владельцам ресурсов скрывать чувствительные поддомены от прямого фаззинга или индексации поисковыми роботами. В обоих случаях, в ответ прилетит ошибка. Бывает, что владелец сайта просто снес DNS-запись на поддомен, считая, что он теперь недоступен. В любом случае, это еще один возможный вектор атаки.
Соответственно, у gobuster есть специальный режим поиска vhost, запускается следующим образом:
Bash: Скопировать в буфер обмена
gobuster vhost [flags]
Что предстоит сделать?
Думаю, что в целом задача ясна, просто обговорим детали. Нам потребуется интерфейс, в котором мы настроим все параметры для запуска gobuster. Читай все аргументы типа поиска “vhost”Спойлер: Список аргументов
Bash: Скопировать в буфер обмена
Код:
Flags:
--append-domain Append main domain from URL to words from wordlist. Otherwise the fully qualified domains need to be specified in the wordlist.
--client-cert-p12 string a p12 file to use for options TLS client certificates
--client-cert-p12-password string the password to the p12 file
--client-cert-pem string public key in PEM format for optional TLS client certificates
--client-cert-pem-key string private key in PEM format for optional TLS client certificates (this key needs to have no password)
-c, --cookies string Cookies to use for the requests
--domain string the domain to append when using an IP address as URL. If left empty and you specify a domain based URL the hostname from the URL is extracted
--exclude-length string exclude the following content lengths (completely ignores the status). You can separate multiple lengths by comma and it also supports ranges like 203-206
-r, --follow-redirect Follow redirects
-H, --headers stringArray Specify HTTP headers, -H 'Header1: val1' -H 'Header2: val2'
-h, --help help for vhost
-m, --method string Use the following HTTP method (default "GET")
--no-canonicalize-headers Do not canonicalize HTTP header names. If set header names are sent as is.
-k, --no-tls-validation Skip TLS certificate verification
-P, --password string Password for Basic Auth
--proxy string Proxy to use for requests [http(s)://host:port] or [socks5://host:port]
--random-agent Use a random User-Agent string
--retry Should retry on request timeout
--retry-attempts int Times to retry on request timeout (default 3)
--timeout duration HTTP Timeout (default 10s)
-u, --url string The target URL
-a, --useragent string Set the User-Agent string (default "gobuster/3.6")
-U, --username string Username for Basic Auth
Global Flags:
--debug Enable debug output
--delay duration Time each thread waits between requests (e.g. 1500ms)
--no-color Disable color output
--no-error Don't display errors
-z, --no-progress Don't display progress
-o, --output string Output file to write results to (defaults to stdout)
-p, --pattern string File containing replacement patterns
-q, --quiet Don't print the banner and other noise
-t, --threads int Number of concurrent threads (default 10)
-v, --verbose Verbose output (errors)
-w, --wordlist string Path to the wordlist. Set to - to use STDIN.
--wordlist-offset int Resume from a given position in the wordlist (defaults to 0)
Соответственно, под параметры потребуются разные компоненты Java.Swing. Где-то текстовая строка, например, для указания имени пользователя и пароля. Где-то флажок, например, для -follow-redirect. Выпадающий список для выбора типа запроса (GET, POST, etc.). Окно выбора файла для словаря или сертификата. Прогрессбар для отслеживания статуса процесса. В общем, будет с чем потренироваться. Сам интерфейс реализуем на базе Tab-ов, чтобы не возникло заморочек, если захотите расширить возможности расширения.
Стартовый URL предлагаю задавать, как просто вводом текста, так и через контекстное меню. Например, зашел пользователь в Target и кликнул на карте сайта “Искать vhosts”. Для пользования удобно и нам лишняя тренировка.
Что касается получения результатов. Хотелось бы, чтобы все происходило интерактивно и найденные виртуальные хосты, сразу добавлялись на карту сайта. С этой целью, будет считывать вывод gobuster. Примерно такой принцип работы: пользователь указал все настройки и нажал кнопку “начать сканирование”. Приложение поменяло свое состояние. С этого момента, слушаем поток вывода данных и поток ошибок. Каждую строку анализируем регулярными выражениями. Если нашли новый поддомен и у него подходящий код ответа, то вызываем метод добавления на карту сайта.
На мой взгляд, задача достаточно интересная и набор приобретаемых навыков крайне полезный. На выходе получим уже второе полноценное решение (или третье?).
Установка необходимого
Я все делать буду на Windows, хотя нет никаких проблем все повторить в Linux. Для начала пару слов про установку gubouster, если еще не установлен. Качаем последний релиз отсюда. Распаковываем в любую папку, добавляем в системные переменные и, на всякий случай, в исключения антивируса Windows. Запускаем cmd и проверяем работоспособность, вызвав gobuster –help. Обычно проблем не возникает.Как и писал выше, интерфейс будем собирать в Apache NetBeans. Скачать
View hidden content is available for registered users!