Поиск виртуальных хостов веб-сервера
Что такое виртуальные хосты
Веб сервер может обслуживать работу более чем одного сайта. Каждый этот сайт и является виртуальным хостом. Именем (идентификатором) виртуального хоста может быть:
- доменное имя
- субдомен (любого уровня, например, kali.tools, en.kali.tools, test.en.kali.tools — это всё виртуальные хосты, которые могут иметь различные настройки и даже разные IP адреса)
- произвольные имена (любая строка, не являющаяся действительным доменным именем или субдоменом)
Примечание: имеются ввиду виртуальные хосты на основе имени, ещё бывают виртуальные хосты на основе IP или на основе номера порта.
Про поиск виртуальных хостов, фактически сайтов на одном IP, а также субдоменов, я уже писал и ссылки на эти статьи я соберу в конце этой инструкции. Сейчас же я хочу рассмотреть именно вариант поиска произвольных имён хостов, который особенно актуален для локальных сетей и который также может использоваться для поиска доменов и субдоменов.
В локальной сети (например, корпоративная сеть организации) все подключённые компьютеры могут использовать собственный DNS сервер организации. Такой DNS сервер обычным образом обрабатывает запросы для доменов (то есть, например, на запрос hackware.ru пришлёт IP 185.26.122.50), а также может быть настроен на обработку дополнительных имён).
К примеру, системный администратор может добавить туда такие имена как
- files.loc — для локального файлообменника
- forum — для объявлений и обсуждений
- info.all — веб-ресурс с информацией для всех
- info.man - с информацией для менеджеров
- и т. д.
В результате, пользователи локальной сети могут вместо IP адреса набрать в строке браузера http://info.all
Или такой адрес: http://forum/
Если нужно сделать, чтобы такие локальные имена хостов работали на одном компьютере, то необязательно использовать DNS сервер имён — достаточно просто отредактировать файл /etc/hosts.
Особенность таких виртуальных хостов в том, что их вряд ли удастся найти с помощью сторонних сервисов, поскольку они могут быть сугубо локальными. Поэтому их приходится искать методами перебора, а для этого нужны специальные инструменты, к примеру VHostScan.
Установка VHostScan в Kali Linux
Установка VHostScan простая, но в официальной справке почему-то указано использование Python3, что на практике делает невозможным установку некоторых устаревших зависимостей и запуск программы не выполняется (я потерял несколько часов, пытаясь решить сопутствующие проблемы). Зато при использовании Python2 всё проходит гладко:
git clone https://github.com/codingo/VHostScan cd VHostScan/ sudo python2 setup.py install
Как искать виртуальные хосты
Суть поиска виртуальных хостов довольно проста — к веб-серверу делается запрос с указанием имени хоста и анализируется полученный ответ. Но есть несколько подводных камней.
Программа VHostScan довольно интеллектуальная. Она знает о существовании дефолтных виртуальных хостов веб-сервера — это такие хосты, чьё содержимое показывается в случае если запрошенный хост не найден. Благодаря этой технике программа не показывает ложные результаты, если веб-сервер отвечает на все хосты подряд. Причём программа сама определяет, что именно показывается дефолтным виртуальным хостом — на основе анализа всех полученных результатов. Кстати, именно по этой причине бесполезно проверять один единственный хост за раз — программа просто не сможет узнать, действительно ли он существует, или просто показано дефолтное содержимое.
Бывает, что веб-сервер при обращении к несуществующим хостам настроен показывать схожие, но не одинаковые страницы. Пример такого ответа:
«Хост не найден. Текущее время 19 часов 18 минут 30 секунд».
Или
«Хост ИМЯ_ХОСТА не найден».
Строго говоря, такие страницы являются уникальными и могут сбить с толку некоторые программы, в результате чего будут получены ложные результаты. В свою очередь VHostScan умеет работать с этой проблемой и анализирует присылаемые страницы по частям. То есть если сервер присылает что-то подобное, то несуществующие хосты не попадут в список найденных, либо получат низкое значение вероятности существования.
Поиск виртуальных хостов по словарю
Для работы программы нужен адрес цели и словарь. Причём с VHostScan поставляется несколько словарей и если вы не указали свой собственный, то программа будет использовать словарь по умолчанию. То есть обязательной является только адрес цели. В качестве адреса можно указать домен, IP адрес или диапазон IP адресов.
Пример поиска других виртуальных хостов по дефолтному словарю virtual-host-scanning.txt на веб-сервере, где работает сайт hackware.ru:
VHostScan -t hackware.ru
Поскольку это хостинг, то никаких лишних виртуальных хостов найдено не было. Кстати, прилагаемый словарь больше подходит для локальной сети.
Как искать сайты на одном IP методом перебора
Кроме поиска нестандартных имён виртуальных хостов, можно искать искать обычные домены и субдомены. Для пример создайте файл vhosts.dic и скопируйте в него
mi-al.ru mi2-al.ru localhost sdsdfsdf.ru hackware.ru www.hackware.ru www2.hackware.ru www3.hackware.ru en.hackware.ru test.hackware.ru ssssdfsdfsd.org suay.ru one-more-fake.site admin mysql local suip.biz www.suip.biz test.suip.biz test.en.suip.biz forum dash administration
Для поиска виртуальных хостов на IP адресе (-t 185.26.122.50) по словарю (-w vhosts.dic):
VHostScan -t 185.26.122.50 -w vhosts.dic
Для указания своего словаря используется опция -w. Полученные результаты:
[+] Most likely matches with a unique count of 1 or less: [>] mi-al.ru [>] hackware.ru [>] test.hackware.ru [>] suay.ru
Поиск субдоменов. Поиск доменов в разных доменных зонах
Опция --prefix сделает так, что перед каждой записью из словаря будет ставится определённая строка — таким образом можно искать определённые субдомены. Например:
VHostScan -t 185.26.122.50 -w vhosts.dic --prefix 'test.'
Точнее говоря, будет сделан поиск по всем словам из словаря, а затем сделан ещё один поиск уже с префиксом.
Если у вас словарь без указания домена верхнего уровня, например:
site super-app installoffice myblog admin-notes waytogo
и так далее, то используя опцию --suffix со строками вида «.ru», «.org», «.net» и т. д. Так можно искать одни и те же имена в разных доменах верхнего уровня.
Поиск виртуальных хостов использующих SSL
Для веб сервера (на примере Apache) адрес http://suip.biz и https://suip.biz (различаются только протоколом HTTP и HTTPS) являются двумя разными виртуальными хостами! Конечно, при настройке веб-сервера в таких случаях обычно указываются одни и те же файлы в качестве содержимого сайта, но нужно помнить о такой необычной возможности — показывать разные сайты при одинаковом доменном имени, но с разным протоколом (если точнее, то это два виртуальных хоста, которые для самого веб-сервера различаются номером порта). Может быть ситуация, что для одного из этих протоколов (в том числе для HTTP) настройка виртуального хоста просто отсутствует.
Для использования безопасного протокола HTTPS имеется опция --ssl. По умолчанию VHostScan использует 80й порт и опция --ssl этого не меняет! То есть дополнительно к этой опции также нужно указать правильный номер порта с опцией -p:
VHostScan -t 185.117.153.79 -w vhosts.dic --ssl -p 443
Полученный результат:
[+] Most likely matches with a unique count of 1 or less: [>] suip.biz
Передача хостов из стандартного ввода
VHostScan может принимать данные, переданные по трубе от других инструментов. Эти данные программа будет трактовать как список слов, например:
cat bank.htb | VHostScan -t 10.10.10.29
При желании, вы можете совместить использование словаря со стандартным вводом. В этом случае строки из словаря будут добавлены к строкам переданным из другой программы:
echo -e 'a.example.com\r\nb.example.com' | VHostScan -t localhost -w ./wordlists/wordlist.txt
Обратите внимание, как передаётся строка с echo:
- используется опция -e
- в качестве разделителя доменов применяется строка \r\n
Подстановка базового хоста
Программа поддерживает вставку базового хоста на лету. Для этого в словаре используйте строку %s, к примеру:
admin.%s beta.%s dev.%s development.%s m.%s mobile.%s old.%s secure.%s www.%s
Можно создать отдельный словарь с такими строками, либо использовать вперемешку с обычными статичными строками. Вместо %s будет подставлен базовый хост, который нужно указать с опцией -b. Если вы не указали базовый хост, то будет подставляться то, что указано в качестве цели с опцией -t — это может быть как домен, так и IP адрес.
Перенаправление портов
Программа VHostScan подходит для использования, в том числе, и с техниками pivoting. Кстати, смотрите статью «Сетевой pivoting: понятие, примеры, техники, инструменты».
Если у вас с помощью SSH настроено перенаправление трафика с локального порта 4444 на порт 80 исследуемой машины example.com, то вы можете использовать команду следующего вида, чтобы VHostScan выполняла подключения через ваш SSH туннель localhost:4444, но формировала заголовки запросов подходящими для прямого подключения к порту 80:
VHostScan -t localhost -b example.com -p 4444 -r 80
Заключение
Справка по VHostScan, её полный список опций и сравнение с другими инструментами: https://kali.tools/?p=4675
Информация о настройке виртуальных хостов веб-сервера Apache
Эти статьи рекомендуются для более глубокого понимания работы виртуальных хостов изнутри, чтобы вы могли посмотреть на виртуальные хосты глазами веб-мастера и веб-сервера, а также самостоятельно практиковаться в их настройке.
- Настройка Apache в Windows (раздел «Подключение виртуальных хостов Apache в Windows»)
- Виртуальные хосты Apache
- Виртуальный хост Apache по умолчанию. _default_ и catch-all в Apache
Альтернативные способы поиска виртуальных хостов
Для поиска некоторых типов виртуальных хостов (домены и субдомены) можно использовать более эффективные техники чем брут-форсинг, атака по словарю. Методы и инструкции по соответствующим инструментам в статьях:
- Поиск субдоменов и построение графов структуры сети с Amass
- Как узнать все сайты на одном IP и в одной подсети
Связанные статьи:
- Reconnoitre: помощник в анализе веб-приложений (66.4%)
- Обход файерволов веб приложений Cloudflare, Incapsula, SUCURI (62.8%)
- Анализ периметра при аудите безопасности сайтов (62.4%)
- Азы работы с веб-сервером для пентестера (60.9%)
- Веб-архивы Интернета: как искать удалённую информацию и восстанавливать сайты (60.2%)
- Мониторинг появления новых субдоменов в реальном времени (RANDOM - 54.8%)