How work with Whatweb

Что такое Whatweb?

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Начнем с того, что это один из сканеров для идентификации технологий, на которых работает существующий веб-сайт, инструмент крут для сбора инфы, но для нахождения уязвимостей слабоват, так как применяет в сканирование стандартные скрипты типа .

 

WhatWeb - это крутецкая кроссплатформенная программа, которая написана на языке Ruby и работает на популярных ОС, таких как Windows, Mac OSX и Linux. WhatWeb используют для определения на каком стеке технологий, каких ее версиях работает сайтец.

 

А собранную инфу можно разделить на такие группы:

- На группу про веб-сервере (используется ли Apache, nginx или что-то ещё, их версии, используется ли PHP и какой версии, какие заголовки отправляются, используется ли OpenSSL и какой версии и т.д.)

- На группу про платформу сайтика (какая используется система управления контентом и какой версии, какие используются библиотеки JavaScript, какие фреймворки и каких версий задействованы в работе веб-сайта и т.п.)

- Последняя группа сопутствующая информация о веб-сайте (IP сайта, страна расположения веб-сервера, почтовые адреса, популярные инструменты аналитики и статистики и прочее)

 

Собранная инфа может применятся для различной аналитики, а также при тестировании на проникновении и при расследовании на основе открытых источников (для сопоставления принадлежности сайтов одному лицу, установлении личности владельца).

 

На текущий момент WhatWeb имеет больше 1700 плагинов для идентификации разнообразных встроенных устройств

 

Особенности

- Как я уже сказал выше 1700 плагинов

- Возможность управлять между скоростью/незаметностью и достоверностью

- Тонкая настройка производительности. Управление количеством одновременно сканируемых веб-сайтов

- Доступны разные форматы логов: краткий, вербальный, XML, JSON, MagicTree, RubyObject, MongoDB, ElasticSearch, SQL

- Возможность поддержки прокси, включая TOR

- Возможность настраивания HTTP заголовки

- Базовая HTTP аутентификация

- Возможность обработки редиректа

- Возможность задавать IP диапазоны в стиле Nmap

 

Страница программы: https://github.com/urbanadventurer/WhatWeb

Скажем спасибо бравому автору: Andrew Horton (urbanadventurer) и Brendan Coles (bcoles)

 

Как установить WhatWeb

В дистрибутивах Kali Linux и BlackArch программа WhatWeb уже стоит из коробки.

Для установки на других дистрибутивах Linux, выполните в командной строке следующие команды:

 

1 sudo apt update

 

2 sudo apt install whatweb ruby-json ruby-rchardet

 

 

Как запустить и не подать виду

 

Самый быстрый способ это запустить так, но мы же понимаем, что не всегда сайт не защищен от сканеров что возможно нам нужна авторизация ну и так далее.

 

1 whatweb [опции] <один или несколько URL>

 

в качестве цели можно прописать не только урл но и IP либо имя хоста

 

Остальные опции этой утилиты:

 

2  --input-file = ФАЙЛ,  -i     Считать цели из файла. Вы можете передать имена хостов или URL напрямую с -i /dev/stdin.

 

МОДИФИКАЦИИ ЦЕЛЕЙ:

 

3  --url-prefix          Добавить префикс к целевому URL.

 

4  --url-suffix          Добавить суффикс к целевому URL.

 

5  --url-pattern      Вставить цели в URL. Например example.com/%insert%/robots.txt

 

Опции --url-prefix и --url-suffix довольно понятны. С помощью первой удобно сканировать одинаковый субдомен на ряде сайтов. А с помощью второй можно сканировать одинаковую папку или страницу, также на ряду сайтов.

--url-pattern вставляет цели в URL. Она требует, чтобы также была установлена опция --input-file. Её можно использовать двумя способами. Главное правило: она вставляет строки из файла --input-file в то место, где указано %insert%.

 

К примеру, имеется файл targets.txt с содержимым:

| blog

| admin

| news

 

Если запустить команду следующим образом:

| whatweb --url-pattern='test.com/%insert%/' --input-file=targets.txt

То будут просканированы цели test.com/blog/, test.com/admin/, test.com/news/

 

В файл targets.txt можно записать URL адреса:

test.com

test.biz

 

Если запустить команду следующим образом:

whatweb --url-pattern='blog.%insert%/' --input-file=targets.txt

 

То будут просканированы цели blog.test.biz и blog.test.ru.

Паттерн может быть более сложным, например: blog.%insert%/admin и пр.

 

АГРЕССИЯ:

 

Тут надо помнить, что уровень агрессии контролирует баланс между скоростью/незаметностью получения данных.

6  -a (1, 2, 3, 4)       Установить уровень агрессии. По умолчанию стоит: 1. А теперь пробежимся по каждой:

  •     - 1 - это незаметный. Он сделает один HTTP запрос на каждую цель и также следует переадресации.
  •     - 2 - это вежливый. Он зарезервирован для будущих использований
  •     - 3 - это агрессивный. Запускает агрессивные функции плагина
  •     - 4 - это тяжёлый. Делает множество HTTP запросов на каждую цель. Пробуются URL из всех плагинов приложения.

 

HTTP ОПЦИИ:

Если, вы запустили проверку на сайт, а вам в ответ в консоле отдало такое, то смотрите пункт 7:

Вернуться назад
gallery/выделение_105
gallery/выделение_108
gallery/выделение_109
gallery/выделение_110

Как я уже писал ранее, в примерах я использую этот инструмент как сканер для определения CMS веб сайта, если конечно вам захочется поюзать его в качестве сканера уязвимостей, то вам придется тогда юзать плагины, которых больше 1700 штук.

 

Теперь для тех данных, что мы получили можно проверят, есть ли уязвимости в данных технологиях через фреймворк Metasploit

 

 

 

И помните все показанное выше, сделано в целях обучения!!!

Можно применять только на своих проектах, после разрешения.

И второй скрин не влез на одну страницу

--user-agent,  -U=АГЕНТ    Установить ПОЛЬЗОВАТЕЛЬСКИЙ АГЕНТ, если его не установить, то все запросы будут определятся как от whatweb. За частую есть защита от ботов на сайтах, если не задан юзерагент при запросах. Поэтому можно задать любой ('Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.181 Safari/537.36') 

 

8  --header, -H                         Добавить HTTP заголовок. Напр. "XXX:XXX". Указание стандартного заголовка заменит его. 

 

9  --follow-redirect=КОГДА   Контролирует, когда следовать перенаправлениям. КОГДА может быть:

            - `never',

            - `http-only',

            - `meta-only',

            - `same-site',

            - `same-domain' или `always'.

По умолчанию стоит: always.

 

10 --max-redirects=ЧИСЛО    Максимальное количество редиректов. По умолчанию стоит: 10.

 

АУТЕНТИФИКАЦИЯ:

Если для доступа к содержимому сайта требуется выполнить вход – ввести логин и пароль, то больше информации можно получить если выполнять сканирование от залогированного пользователя. WhatWeb поддерживает аутентификацию двух видов:

 

11 --user, -u=<пользователь:пароль>    Базовая аутентификация HTTP.

 

12 --cookie, -c=КУКИ                                    Использовать куки, напр. 'имя=значение; имя2=значение2'.

 

Куки можно использовать, когда применяется вход через какуе-то из веб-форм. Для этого вам нужно совершить вход и посмотреть, какие куки были установлены веб-сайтом. Для этого удобно использовать программу Burp Suite. Если передавать серверу верные куки, то он будет обрабатывать запросы WhatWeb как от совершившего вход пользователя. Т.е. будет показывать ему страницу, доступную для вошедшего пользователя.

 

ПРОКСИ:

 

13 --proxy  <имя хоста[:порт]>                 Установить имя хоста и порт прокси. По умолчанию: 8080.

 

14 --proxy-user  <имя пользователя:пароль>    Установить пользователя прокси и пароль.

 

ПЛАГИНЫ:

15 --list-plugins, -l                                         Список плагинов.

 

16 --info-plugins, -I=[ПОИСК]                     Выводит список всех плагинов с подробной информацией. Ищет по ключевым                                                                                     словам, которых можно указать несколько через запятую.

 

17 --search-plugins=СТРОКА                      Поиск плагинов по ключевому слову.

 

18 --plugins, -p=СПИСОК                             Выбор плагинов. СПИСОК это разделённый запятой набор отобранных плагинов.

                                                                         По умолчанию это all (все).

 

Пример: +/tmp/moo.rb,+/tmp/foo.rb title,md5,+./plugins-disabled/plugins-disabled,-md5

                  -p + это сокращение для -p +plugins-disabled.

 

19 --grep, -g=СТРОКА                                  Поиск СТРОКИ в HTTP ответах. Выдаёт отчёт плагином под названием Grep.

 

20 --custom-plugin=ОПРЕДЕЛЕНИЕ         Задаёт пользовательский плагин, названный Custom-Plugin,

               

Пример: ":text=>'powered by abc':version=>/powered[ ]?by ab[0-9]/:ghdb=>'intitle:abc \"powered by abc\"'"

                  ":md5=>'8666257030b94d3bdb46e05945f60b42'{:text=>'powered by abc'}"

 

21 --dorks=ПЛАГИН                                    Выводит список Google дорков для выбранного плагина.

 

ВЫВОД ИНФЫ:

22 -v   Вербальный вывод, включает описания плагинов. При двойном вызове можно использовать в качестве отладки.

 

23 --colour,--color=КОГДА                          управляет использованием цвета. КОГДА может быть:

                - `never',

                - `always',

                - `auto'.

 

24 --quiet, -q                                                 Не показывать краткий журнал в STDOUT.

 

25 --no-errors                                               Не показывать сообщения об ошибках.

 

ЛОГИ:

Имеется много опций для сохранения результатов сканирования в разных форматах:

 

 

26 --log-brief=ФАЙЛ                                   Краткий лог в одну строку.

     --log-verbose=ФАЙЛ                             Вербальный вывод лога.

     --log-errors=ФАЙЛ                                Журнал ошибок.

     --log-xml=ФАЙЛ                                    Лог в XML.

     --log-json=ФАЙЛ                                   Лог в JSON.

     --log-sql=ФАЙЛ                                     Журнал выражений SQL INSERT.

     --log-sql-create=ФАЙЛ                        Создать таблицы базы данных SQL.

     --log-json-verbose=ФАЙЛ                   Вербальный лог в JSON.

     --log-magictree=ФАЙЛ                        Лог в MagicTree XML.

     --log-object=ФАЙЛ                               Лог в Ruby object inspection.

     --log-mongo-database                         Имя базы данных MongoDB.

     --log-mongo-collection                        Имя коллекции MongoDB. По умолчанию: whatweb.

     --log-mongo-host                                 Имя хоста или IP адрес MongoDB. По умолчанию: 0.0.0.0.

     --log-mongo-username                       Имя пользователя MongoDB. По умолчанию: nil.

     --log-mongo-password                        Пароль MongoDB. По умолчанию: nil.

     --log-elastic-index                                 Имя индекса для хранения результатов. По умолчанию: whatweb

     --log-elastic-host                                   Хост:порт elastic http интерфейса. По умолчанию: 127.0.0.1:9200

 

Можно одновременно сохранять в разные форматы, если указать несколько опций журналирования. Продвинутым пользователям, которые хотят SQL вывод, следует прочитать исходный код, чтобы увидеть неподдерживаемые возможности.

   

ПРОИЗВОДИТЕЛЬНОСТЬ И СТАБИЛЬНОСТЬ:

27 --max-threads, -t                                  Количество одновременных потоков. По умолчанию: 25.

     --open-timeout                                     Время в секундах. По умолчанию: 15.

     --read-timeout                                      Время в секундах. По умолчанию: 30.

     --wait=СЕКУНДЫ                                  Ждать СЕКУНД между подключениями. Полезно, когда используется единичный поток.

 

СПРАВКА И ПРОЧЕЕ:

28 --short-help                                           Краткая справка.

     --help, -h                                                 Полная справка по использованию.

     --debug                                                   Выводить ошибки в плагинах.

 

 

Запускаем whatweb

 

 

whatweb -v -a 4 -U 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.181 Safari/537.36' https://test.com/

 

И получим в ответ такие данные для анализа в дальнейшем