Описание VHostScan
Сканер виртуальных хостов, который выполняет обратные преобразования, может использоваться через инструменты pivoting'а (ssh/nc), выявляет сценарии catch-all (когда веб-сервер отвечает на запросы для любых виртуальных хостов), работает с подстановочными символами, псевдонимами и динамическими дефолтными страницами в настройке виртуальных хостов.
Примечание: о pivoting смотрите статью «Сетевой pivoting: понятие, примеры, техники, инструменты».
Ключевые преимущества:
- Быстрое выделение уникального контента в сценариях catch-all (использование виртуальных хостов по умолчанию)
- Обнаружение меняющихся элементов в сценариях catch-all, когда результат имеет динамический контент на странице (такое как время)
- Идентифицирует псевдонимы путём тонкой настройки глубины уникальности совпадений
- Список слов поддерживает стандартные слова и переменные для ввода базового имени хоста (например, dev.%s из словаря будет запущено как dev.БАЗОВЫЙ_ХОСТ)
- Работает через HTTP и HTTPS
- Возможность установить реальный порт веб-сервера для использования в заголовках при pivoting через ssh/nc
- Добавляет простые заголовки ответа для обхода некоторых WAF (файерволов веб приложений)
- Идентифицирует новые цели используя обратные преобразования и добавляет в список слов
Примечание: о виртуальных хостах по умолчанию смотрите статью «Виртуальный хост Apache по умолчанию. _default_ и catch-all в Apache».
Сравнение продуктов
| Функция | Burp Suite Intruder | Nmap http-vhosts NSE | VHostScan |
|---|---|---|---|
| Определение виртуальных хостов | Вручную или со списком слов | Использует предопределённый список слов и имена хостов | Использует установленные вручную имена, или с указанным списком(ами) слов. Списки слов прилагаются к программе |
| Определение псевдонимов | Ручной сортировкой по длине контента и обзору результатов | Нет | Вручную указывая лимит для «уникальности» |
| Определение сценариев catch-all | Да (фильтр по длине), но затем не может автоматически идентифицировать уникальный контент | Да, но затем не может автоматически идентифицировать уникальный контент | Да, подсветит уникальный контент хэшируя результаты и сравнивая их |
| Определение виртуальных хостов с динамическими catch-all страницами | Ручной сортировкой по длине контента и обзору меняющихся частей | Нет | Анализирует результаты хэшируя части содержимого страницы и автоматически подсвечивает меняющиеся части |
| Настройка подстановки хоста/порта для использования в заголовках при pivoting через ssh/nc и другие | Нет | Нет | Да! |
| Игнор HTTP кодов | Фильтр кодов статуса | Только 404 | Можно указать через запятую список |
| Заголовки обхода простых WAF | Да, используя «Bypass WAF» Bapp | Нет | Да! Встроено во флаги |
Домашняя страница: https://github.com/codingo/VHostScan
Автор: Michael Skelton
Лицензия: GPLv3
Справка по VHostScan
Использование:
VHostScan [-h] -t ЦЕЛЕВЫЕ_ХОСТЫ [-w СЛОВАРЬ] [-b БАЗОВЫЙ_ХОСТ] [-p ПОРТ]
[--prefix ПРЕФИКС] [--suffix СУФФИКС] [-r РЕАЛЬНЫЙ_ПОРТ]
[--ignore-http-codes ИГНОРИРОВАТЬ_HTTP_КОДЫ]
[--ignore-content-length ИГНОРИРОВАТЬ_ДЛИНУ_КОНТЕНТА] [--first-hit]
[--unique-depth УНИКАЛЬНАЯ_ГЛУБИНА] [--ssl] [--fuzzy-logic]
[--no-lookups] [--rate-limit ЗАДЕРЖКА] [--waf] [-v]
[-oN НОРМАЛЬНЫЙ_ВЫВОД | -oJ ВЫВОД_JSON | -oG ВЫВОД_ДЛЯ_GREP]
[--random-agent | --user-agent USER_AGENT]
Опции:
-h, --help Показать справку и выйти
-t ЦЕЛЕВЫЕ_ХОСТЫ Установить диапазон адресов в качестве цели.
Например 10.11.1.1-255
-w СЛОВАРЬ Установить список слов для использования (по умолчанию это
./wordlists/virtual-host-scanning.txt)
-b БАЗОВЫЙ_ХОСТ Установить хост для использования во время
подстановки в список слов (по умолчанию ЦЕЛЬ).
-p PORT Установить используемый порт (по умолчанию 80).
--prefix ПРЕФИКС Добавить префикс (строка перед) к каждому элементу в
словаре (dev, test и т.д.)
--suffix СУФФИКС Добавить суффикс (строка после) к каждому элементу в словаре
-r РЕАЛЬНЫЙ_ПОРТ Реальный порт веб сервера для использования в заголовках, когда
не 80 (смотрите RFC2616 14.23), полезно во время pivoting
черзе ssh/nc и т.д. (по умолчанию ПОРТ).
--ignore-http-codes ИГНОРИРОВАТЬ_HTTP_КОДЫ
Список http кодов (разделённый запятыми) для игнорирования
при сканировании виртуальных хостов (по умолчанию 404).
--ignore-content-length ИГНОРИРОВАТЬ_ДЛИНУ_КОНТЕНТА
Игнорировать длины контента указанной величины (по умолчанию
0).
--first-hit Вернуть первый успешный результат. Только в сценариях,
где вы уверены, что не настроена catch-all (такие как
CTF).
--unique-depth УНИКАЛЬНАЯ_ГЛУБИНА
Показать вероятные совпадения содержимого страницы найденного x
раз (по умолчанию 1).
--ssl Если установлена, то соединения будут делаться через HTTPS,
а не через HTTP (по умолчанию http).
--fuzzy-logic Если установлено, то нечеткое совпадение будет выполняться в отношении
уникальных хостов. (по умолчанию выключено).
--no-lookups Отключить обратные преобразования (определяет новые цели и
добавляет в список слов, по умолчанию включено).
--rate-limit ЗАДЕРЖКА
Время в секундах для задержки между каждым сканированием
(по умолчанию 0).
--waf Если установлена эта опция, то будут отправляться заголовки для обхода простых WAF.
-v Вербальный вывод
-oN НОРМАЛЬНЫЙ_ВЫВОД Нормальный вывод печатается в файл, когда после опции -oN
в качестве аргумента указано имя файла.
-oJ ВЫВОД_JSON вывод JSON печатается в файл, когда после опции -oJ в качестве
аргумента указано имя файла.
-oG ВЫВОД_ДЛЯ_GREP Вывод для программы grep печатается в файл, когда после опции -oG
в качестве аргумента указано имя файла.
--random-agent Если установлено, то каждое сканирование будет использовать случайный
пользовательский агент из заготовленного списка.
--user-agent USER_AGENT
Указать пользовательский агент для использования в сканировании
Руководство по VHostScan
Страница man отсутствует.
Примеры запуска VHostScan
Создадим тестовый словарик в файле vhosts.dic:
echo -e 'mi-al.ru\r\nmi2-al.ru\r\nlocalhost\r\nsdsdfsdf.ru\r\nhackware.ru\r\nssssdfsdfsd.org\r\nsuay.ru\r\none-more-fake.site\r\nadmin\r\nmysql\r\nlocal' > vhosts.dic
Запускаем сканирования одного IP сервера (-t 185.26.122.50) и ищем там виртуальные хосты из словаря (-w vhosts.dic):
VHostScan -t 185.26.122.50 -w vhosts.dic
Полученные результаты:
[+] Most likely matches with a unique count of 1 or less:
[>] mi-al.ru
[>] hackware.ru
[>] suay.ru
Установка VHostScan
Установка в Kali Linux
sudo apt install python3-levenshtein
git clone https://github.com/codingo/VHostScan
cd VHostScan/
sudo python setup.py install
Установка в BlackArch
Программа предустановлена в BlackArch.
sudo pacman -S python-levenshtein python-tzdata vhostscan
Альтернативный вариант установки
git clone https://github.com/codingo/VHostScan
cd VHostScan/
virtualenv env
source env/bin/activate
pip3 install setuptools
python3 setup.py install
VHostScan -h
Для последующих запусков:
cd test/VHostScan/
source env/bin/activate
VHostScan -h
Информация об установке в другие операционные системы будет добавлена позже.

