Сегодня мы будем работать с таким сканером веб-серверов как Nikto.
У меня Parrot OS со встроенным Nikto, но вам придётся скачивать, если у вас обычный Линукс.
С помощью него вы способны проверить сервера на ошибки, неверные настройки, дефолтные файлы и на уязвимости.
Скажу сразу, что Nikto не создавался быть незаметным и его активность останется в логах сервера и попадёт в поле зрения IPS/IDS(система обнаружения и предотвращения вторжений). Советую работать через прокси.
Обновляем пакеты ОС и клонируем репозиторий с GitHub'а:
sudo apt update
git clone https://github.com/sullo/nikto.git
Всегда перед использованием обновляйте Nikto:
nikto -ubdate
nikto -update
Тут нам представили некоторые аргументы к командам. Сегодня мы их тоже разберём. Плюс(+) значит требуется значение. То же самое вы увидите в результате аргумента "-h"(-help)
И так, заходим в директорию и введём первые команды:
cd nikto
nikto -host www.CyberCat.uz
Тут нам нужно указать хост сайта(IP или домен). Если вы хотите указать свой порт, то добавляете его "-p"(-port):
nikto -host www.CyberCat.uz -p 443
Если вы вводите IP адрес, то порт можно указать так:
111.111.11.11:443
Или перечислением:
nikto -host www.CyberCat.uz -p 88,443,80
также можно указать диапазон:
- p 80-90
Вы можете ещё указать несколько хостов для сканирования на одну сессию nikto. Для этого вам нужно создать текстовой файл с прописанными хостами внутри и вызвать его в команде с указанием полного пути. Хосты должны быть перечислены на каждой строке.
Чтобы сохранить отчёт о сканировании, нужно под аргументом "-o"(-output) указать куда кидать отчёт и выбрать формат под аргументом "-Format":
nikto -host www.CyberCat.uz -o ~/CyberCatTest.html -Format htm
Форматы могут быть следующие:
html, csv, txt, sql, nbe, xml. Если формат не указан, то он будет взят из расширения файла с аргументом "-о"
Nikto сначала начинает скан через HTTP и если он замечает SSL сертификат,он переходит на HTTPS. Если вы точно знаете что сайт имеет SSL, вы можете сразу начать скан через HTTPS с помощью аргумента "-ssl", дабы сохранить время. А аргумент "-nossl" отключает использование ssl
Аргумент "-Tuning+":
1 Интересные файлы/Увиденные в логах
2 Неправильно настроенные/Дефолтные файлы
3 Раскрытие информации
4 Инъекция (XSS/Script/HTML)
5 Удалённое извлечение файлов — Внутри корня веб
6 Отказ в обслуживании
7 Удалённое извлечение файлов — По всему серверу
8 Выполнение команд/Удалённый шелл
9 SQL-инъекция
0 Выгрузка файлов
a Обход аутентификации
b Идентификация программного обеспечения
c Удалённое внедрение кода
d Веб-служба
e Административная консоль
x Обратное значение опций настройки т. е. включить всё, кроме указанного)
Один из примеров вывода со значением Tuning. Тут я проверил наличие уязвимостей на инъекции (XSS/Script/HTML)
По дефолту запросы отправляются каждые 10 секунд, а с аргументом "-timeout+" вы сможете сами обозначить тот самый таймаут.
Как я сказал в начале, активность вашего скана будет замечена в логах,поэтому вам лучше использовать прокси. Это может быть любой ваш прокси или что-то, что обеспечивает вам какую-то анонимность. Также вы можете работать через прокси прямо в консоли введя аргумент "-useproxy" и
Аргумент "-Display+" позволяет включить или отключить отображение вывода:
1 Показать редиректы
2 Показать полученные кукиз
3 Показать все ответы 200/OK
4 Показать URL, которые требуют аутентификацию
D Отладочный вывод
E Отобразить все HTTP ошибки
P Печатать прогресс в STDOUT (стандартный вывод)
S Собрать из вывода IP и имена хостов
V Вербальный вывод
Также, если вы добавите аргумент "-dbcheck", то база данных проверится на ошибки синтаксиса.
"-404code" позволяет игнорировать HTTP коды. Формат: 302,301Аргумент "-id+" позволяет использовать аутентификацию на хосте, формат id:pass или id:pass:realm
"-mutate+"
Предположить дополнительные имена файлов:
1 Проверить все файлы по всем корневым директориям
2 Предположить имена файлов с паролями
3 Перечислить имена пользователей через Apache (запросы вида /~user)
4 Перечислить имена пользователя через cgiwrap (запросы типа /cgi-bin/cgiwrap/~user)
5 Попытаться брут-форсить имена субдоменов, предположить, что имя хоста является родительским доменом
6 Попытаться угадать имена директорий из вашего словаря
Я никого ни к чему не призываю, статья написана в ознакомительных целях!