Сегодня мы будем работать с таким сканером веб-серверов как 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 Попытаться угадать имена директорий из вашего словаря Я никого ни к чему не призываю, статья написана в ознакомительных целях!