VHostScan

Описание 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

git clone https://github.com/codingo/VHostScan
cd VHostScan/
sudo python setup.py install

Установка в BlackArch

Программа предустановлена в BlackArch.

sudo pacman -S vhostscan

Информация об установке в другие операционные системы будет добавлена позже.

Скриншоты VHostScan

Инструкции по VHostScan

Близкие программы:

  • Nikto (57.1%)
  • testssl.sh (57.1%)
  • hsecscan (57.1%)
  • Plecost (51%)
  • DIRB (51%)
  • simple findbackdoor (RANDOM - 1%)
  • Рекомендуется Вам:

    Comments are Closed