Инструкция по использованию сканеров веб-серверов Nikto

Что такое Nikto

Nikto – это сканер с открытым исходным кодом (GPL) для веб-серверов, он выполняет комплексные тесты в отношении серверов по нескольким направлениям, включая более 6700 потенциально опасных файлов/программ, проверка на устаревшие версии более 1250 серверов и проблемы, специфичные для версий более чем 270 серверов. Сканер также проверяет элементы конфигурации сервера, такие как присутствие нескольких индексных файлов, серверные опции HTTP и пытается определить имя и версии веб-сервера и программного обеспечения.

На официальном сайте изменения замерли на 2.1.5 версии аж в 2012 году. Тем не менее, под руководством автора проект живёт на GitHub’е, пользователи регулярно добавляют в базу данных и плагины изменения для сканирования новых уязвимостей, новых версий и т.д.

Nikto не создавался быть незаметным. Он будет тестировать веб-сервер за самое быстрое возможное время, очевидно, что его активность попадёт в логи веб-сервера и в поле зрение IPS/IDS (систем обнаружения/предотвращения вторжений). Тем не менее, имеется поддержка для анти-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 и предустановлен в Kali Linux, на момент написания пакет не обновлялся уже 2 года.

При этом на GitHub’е жизнь вокруг проекта есть, причём довольно активная.

Поэтому не смотря на установленную версию, мы загрузим Nikto с GitHub’а и будем использовать его для сканирований:

git clone https://github.com/sullo/nikto.git
cd nikto/program/
./nikto.pl -Version

Простые проверки с 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 – Пауза

Анонимные сканирования с Nikto

Для анонимных сканирований можно воспользоваться услугами сети Tor. Но поскольку Nikto не поддерживает работу с SOCKS, то нам дополнительно нужно настроить ещё и Privoxy.

В Kali Linux установка Privoxy делается так:

sudo apt-get install tor privoxy

Примечание: настройка в Arch Linux / BlackArch осуществляется аналогичным образом, но за исключением команды по установке пакетов. Вместо вышеприведённой нужно использоваться

sudo pacman -S tor privoxy

В файл /etc/privoxy/config добавляем строки:

forward-socks4 / localhost:9050 .
forward-socks4a / localhost:9050 .
forward-socks5t / localhost:9050 .

Запускаем и добавляем в автозагрузку службы:

sudo systemctl start tor
sudo systemctl enable tor
sudo systemctl start privoxy
sudo systemctl enable privoxy

Теперь для того, чтобы сканирование происходило через Tor, добавляйте к каждой команде -useproxy http://localhost:8118/. Например:

nikto -h URL -useproxy http://localhost:8118/

Бесплатный онлайн сервис сканирования с Nikto

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

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

Рекомендуемые статьи:

Добавить комментарий

Ваш e-mail не будет опубликован.