Nikto – это инструмент оценки веб-серверов. Он предназначен для поиска различных дефолтных и небезопасных файлов, конфигураций и программ на веб-серверах любого типа. Комплексные тесты выполняются в отношении серверов по нескольким направлениям, включая более 7400 потенциально опасных файлов/программ, проверка на устаревшие версии более 1350 серверов и проблемы, специфичные для версий более чем 300 серверов. Сканер также проверяет элементы конфигурации сервера, такие как присутствие нескольких индексных файлов, серверные опции HTTP и пытается определить имя и версии веб-сервера и программного обеспечения.
Работа утилиты Nikto довольно «шумная». Упор в тестирование веб-сервера делается на время, очевидно, что активность сканера попадёт в логи веб-сервера и в поле зрение систем обнаружения/предотвращения вторжений. Однако стоит заметить, что имеется поддержка для анти-IDS методов из LibWhisker – на тот случай, если Вы захотите протестировать вашу систему IDS.
Не каждая проверка относится к проблеме безопасности, хотя большинство относятся. Некоторые пункты являются проверками типа «только для информации», которые ищут вещи, может быть не имеющие брешей безопасности, но веб-мастер или безопасник могут не знать, что это присутствует на сервере. Обычно в выводимой информации эти элементы помечены соответствующим образом. Есть также некоторые проверки на неизвестные элементы, которые были замечены в файлах журналов.
Особенности и возможности Nikto
Вот некоторые из основных особенностей Nikto:
- Поддержка SSL (Unix с OpenSSL или может быть Windows с Perl/NetSSL в ActiveState)
- Полная поддержка HTTP прокси
- Проверка на устаревшие компоненты сервера
- Сохранение отчёта в виде простого текста, XML, HTML, NBE или CSV
- Движок шаблонов для простой настройки отчётов
- Сканирование нескольких портов на сервере или несколько серверов полученных из файла ввода (включая вывод nmap)
- Техники кодирования LibWhisker IDS
- Идентификация установленного программного обеспечения по заголовкам, иконкам (favicon) и файлам
- Аутентификация на хосте с Basic и NTLM
- Угадывание поддоменов
- Перечисление имён пользователей Apache и cgiwrap
- Техники мутации для «рыбалки» за контентом веб-серверов
- Подстройка сканирования, для включения или исключения целых классов проверок на уязвимости
- Предположение учётных данных для области авторизации (включая множество стандартных комбинаций логинов/паролей)
- Угадывание авторизации работает с любой директорией, а не только с корневой
- Улучшенное подавление ложных срабатываний посредством нескольких методов: заголовки, содержимое страницы и вычисления хеша содержимого
- Сообщение о «необычных» увиденных заголовках
- Интерактивный статус, можно поставить на паузу и изменить настройки вербальности
- Сохранение полных запросов/ответов для тестов, давших положительные результаты
- Повторное воспроизведение положительных запросов
- Максимальное время выполнения на одну цель
- Автоматическая постановка на паузу в определённое время
- Проверки на распространённые «парковочные» сайты
- Вход в Metasploit
Запуск nikto в «Сканер-вс»
Простые проверки с Nikto
Самое простое сканирование Nikto требует только указания хоста в качестве цели, поскольку 80 порт подразумевается, если не указан. Хостом может быть как IP, так и имя хоста машины, указывается используя опцию -h (-host). Следующая команда просканирует 192.168.0.1 на TCP порту 80:
./nikto.pl -h 192.168.0.1
Для проверки на другом порте, укажите с опцией -p (-port) номер порта. Следующая команда просканирует 192.168.0.1 на TCP порту 443:
./nikto.pl -h 192.168.0.1 -p 443
Хосты, порты и протоколы также можно указывать используя синтаксис полного URL:
./nikto.pl -h https://192.168.0.1:443/
Не необходимости указывать 443 порт для SSL, т.к. Nikto начнёт с обычного HTTP и если это не получится, перейдёт к HTTPS. Если вы уверены, что это сервер с SSL, указание -s (-ssl) ускорит тест.
./nikto.pl -h 192.168.0.1 -p 443 -ssl
Сканирование нескольких портов в Nikto
Nikto может сканировать несколько портов за одну сессию сканирования. Для тестирования более чем одного порта на том же хосте, укажите список портов в опции -p (-port). Порты можно указать в виде диапазона (т.е. 80-90), в качестве разделённого запятой списка (т.е. 80,88,90). Следующая команда просканирует хост на портах 80, 88 и 443:
./nikto.pl -h 192.168.0.1 -p 80,88,443
Сканирование нескольких хостов в Nikto
Nikto поддерживает сканирование нескольких хостов за одну сессию. Их можно указать в текстовом файле имён хостов или IP. Вместо передачи имени хоста или IP для опции -h (-host), можно передать имя файла. Файл хостов должен иметь формат один хост на одну строку с номером(номерами) портов на конце каждой строки. Порты могут быть отделены от хоста и других портов двоеточием или запятой. Если порт не указан, подразумевается 80 порт.
Это пример правильного файла хостов:
- 192.168.0.1:80
- http://192.168.0.1:8080/
- 192.168.0.3
Файлом хостов также может быть вывод nmap в формате "greppable" (т.е. вывод с опцией -oG).
Файл можно передать в Nikto через стандартный вывод/ввод используя в качестве имени файла "-". Например:
nmap -p80 192.168.0.0/24 -oG - | nikto.pl -h -
Использование прокси
Nikto может использовать прокси при указании его в файле настройки (nikto.conf), либо в опции командной строки.
Для использования файла nikto.conf установите переменные PROXY* и затем выполните Nikto с опцией -useproxy. Все соединения будут переданы через HTTP прокси, указанный в файле конфигурации.
./nikto.pl -h localhost -p 80 -useproxy
Для установки прокси в командной строке, используйте опцию -useproxy с настройками прокси в качестве аргумента, например:
./nikto.pl -h localhost -useproxy http://localhost:8080/
Интерактивные функции
Nikto содержит несколько опций, которые могут быть изменены во время активного сканирования.
Во время активного сканирования, нажатия любой нижеприведённой клавиши включит или отключит указанную функцию или выполнить указанное действие. Они чувствительны к регистру.
- Пробел – Сообщить текущий статус сканирования
- v – Включить/включить вербальный режим
- d – Включить/выключить режим отладки
- e – Включить/включить сообщения об ошибках
- p – Включить/включить сообщение о прогрессе
- r – Включить/включить отображения перенаправления
- c – Включить/включить отображение кукиз
- o – Включить/включить показ OK
- a – Включить/включить отображение аутентификации
- q – Выйти
- N – Следующий хост
- P – Пауза