How work with Whatweb

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

TOOLS FOR FIND VULNERABILITY

Логин Свят

1/4/20232 min read

Почнемо з того, що це один із сканерів для ідентифікації технологій, на яких працює існуючий сайт, інструмент крутий для збору інформації, але для знаходження вразливостей слабенький, оскільки використовує в сканування стандартні скрипти типу.

А зібрану інфу можна поділити на такі групи:

- На групу про веб-сервері (чи використовується 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)

Як встановити

У дистрибутивах 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:

7 --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)

І отримаємо у відповідь такі дані для аналізу надалі

І другий скрін не вліз на одну сторінку

Як я вже писав раніше, у прикладах я використовую цей інструмент як сканер для визначення CMS веб сайту, якщо звичайно вам захочеться поюзати його як сканер уразливостей, то вам доведеться тоді юзати плагіни, яких більше 1700 штук. Тепер для тих даних, що ми отримали, можна перевірять, чи є вразливості в даних технологіях через фреймворк Metasploit