Введение
Nikto — это мощный сканер веб-серверов с открытым исходным кодом, который выполняет комплексные тесты веб-серверов на наличие множества элементов, включая более 6700 потенциально опасных файлов/программ, проверяет устаревшие версии более чем 1250 серверов и проблемы, специфичные для версий, на более чем 270 серверах.
По умолчанию Nikto запускает широкий набор плагинов, что может занимать много времени. Для более эффективного и целенаправленного сканирования вы можете выбрать конкретные плагины для запуска. Это полезно, когда вы хотите проверить наличие определенной уязвимости или конкретного типа неправильной конфигурации.
В этой лаборатории вы научитесь выводить список всех доступных плагинов Nikto, а затем выполнять сфокусированное сканирование с использованием одного конкретного плагина.
Просмотр всех доступных плагинов с помощью -list-plugins
На этом шаге вы научитесь просматривать все плагины, доступные Nikto для сканирования. Это первый шаг к выполнению сфокусированного сканирования, поскольку вам нужно знать названия плагинов, из которых вы можете выбирать.
Опция -list-plugins указывает Nikto вывести подробный список всех плагинов и затем выйти, не выполняя сканирование.
Выполните следующую команду в терминале, чтобы вывести список всех доступных плагинов:
nikto -list-plugins
Вы увидите длинный список прокручиваемых плагинов. Вывод форматируется в столбцы, показывающие имя плагина, автора и краткое описание его назначения.
Вот урезанный пример того, как будет выглядеть вывод:
- Nikto 2.5.0
---------------------------------------------------------------------------
Plugin: apache_expect_header
Author: David Lodge <dave at cirt.net>
Description: See if an Expect header will crash Apache. Bugtraq ID 5253.
Type: Standard
Version: 2.5.0
CVSID: $Id: apache_expect_header.plugin,v 1.6 2023/03/28 17:00:00 cirt Exp $
Plugin: apacheusers
Author: Chris Forte
Description: Enumerate apache users via ~user requests
Type: Standard
Version: 2.5.0
CVSID: $Id: apacheusers.plugin,v 1.6 2023/03/28 17:00:00 cirt Exp $
... (много других плагинов) ...
Уделите немного времени, чтобы просмотреть список и получить представление о разнообразии тестов, которые может выполнять Nikto.
Выбор конкретного плагина для запуска, например apacheusers
На этом шаге мы рассмотрим список из предыдущего шага и выберем конкретный плагин для нашего сфокусированного сканирования. Это концептуальный шаг, на котором вы определяете плагин на основе конкретной цели тестирования.
Для этой лаборатории мы выберем плагин apacheusers. Как указано в его описании, этот плагин пытается "перечислить пользователей Apache через запросы ~user". Это распространенный тест, чтобы проверить, раскрывает ли веб-сервер действительные системные имена пользователей.
Несмотря на то, что наш целевой сервер является простым сервером Python, а не Apache, мы будем использовать этот плагин для демонстрации процесса выбора и выполнения. Плагин будет запущен, но он не найдет никаких уязвимостей на нашем не-Apache сервере, что является действительным и ожидаемым результатом.
На следующем шаге вы узнаете, как составить команду для использования только этого плагина.
Использование опции -plugins с желаемым именем плагина
На этом шаге вы узнаете, как составить команду Nikto для запуска только выбранного вами плагина.
Чтобы указать, какие плагины запускать, используйте опцию -plugins, за которой следует имя плагина. Вы также можете предоставить список плагинов через запятую, если хотите запустить более одного, но для этой лаборатории мы сосредоточимся на одном плагине.
Базовая структура команды:
nikto -h <целевой_хост> -plugins <имя_плагина>
Для выбранного нами плагина apacheusers и нашего тестового сервера, работающего локально на порту 8000, команда будет выглядеть так:
nikto -h 127.0.0.1:8000 -plugins apacheusers
Разберем эту команду:
nikto: Программа, которую мы запускаем.-h 127.0.0.1:8000: Опция-h(host) указывает цель. Наш тестовый сервер работает на локальной машине (127.0.0.1) на порту8000.-plugins apacheusers: Это ключевая часть команды. Она указывает Nikto запускать только плагинapacheusersи пропускать все остальные.
На следующем шаге вы выполните эту команду и увидите результаты сфокусированного сканирования.
Выполнение сфокусированного сканирования цели
На этом шаге вы выполните команду, которую только что узнали, для проведения сфокусированного сканирования против тестового веб-сервера.
Выполните следующую команду в вашем терминале. Это запустит Nikto, но вместо того, чтобы работать несколько минут, он завершится очень быстро, поскольку будет запущен только один плагин.
nikto -h 127.0.0.1:8000 -plugins apacheusers
Вывод будет намного короче, чем при стандартном сканировании Nikto. Он будет выглядеть примерно так:
- Nikto 2.5.0
---------------------------------------------------------------------------
+ Target IP: 127.0.0.1
+ Target Hostname: 127.0.0.1
+ Target Port: 8000
+ Start Time: 2023-10-27 10:30:00 (GMT0)
---------------------------------------------------------------------------
+ Server: SimpleHTTP/0.6 Python/3.10.6
+ Allowed HTTP Methods: GET, HEAD
+ 1 host(s) tested
+ 0 error(s) and 0 item(s) reported on remote host
+ End Time: 2023-10-27 10:30:01 (GMT0) (1 seconds)
---------------------------------------------------------------------------
+ 1 host(s) tested
Обратите внимание, как быстро завершилось сканирование. Это демонстрирует основное преимущество использования конкретных плагинов для целевого тестирования.
Анализ вывода специфичного для плагина
На этом заключительном шаге давайте проанализируем вывод нашего сфокусированного сканирования. Понимание значения результатов — это важнейший навык в тестировании безопасности.
Посмотрите снова на вывод из предыдущего шага:
- Nikto 2.5.0
---------------------------------------------------------------------------
+ Target IP: 127.0.0.1
+ Target Hostname: 127.0.0.1
+ Target Port: 8000
+ Start Time: ...
---------------------------------------------------------------------------
+ Server: SimpleHTTP/0.6 Python/3.10.6
...
+ 0 error(s) and 0 item(s) reported on remote host
+ End Time: ...
---------------------------------------------------------------------------
+ 1 host(s) tested
Самая важная строка для нашего анализа:
+ 0 error(s) and 0 item(s) reported on remote host
Эта строка говорит нам, что плагин apacheusers был запущен, но не обнаружил ни одного из условий, для обнаружения которых он был разработан. Это ожидаемый результат, поскольку наша цель — сервер на Python, а не сервер Apache, настроенный для раскрытия пользовательских каталогов.
В тестировании на проникновение отрицательный результат (отсутствие уязвимости) так же важен, как и положительный. Это означает, что для данного конкретного теста сервер выглядит безопасным. Запустив только плагин apacheusers, мы смогли быстро и эффективно подтвердить это, избежав шума и затрат времени полного сканирования.
Резюме
Поздравляем с завершением этой лабораторной работы!
Вы успешно научились выполнять сфокусированное сканирование с помощью Nikto, выбирая конкретный плагин. Этот метод является неотъемлемой частью эффективной и целенаправленной оценки безопасности веб-приложений.
В этой лабораторной работе вы отработали следующие навыки:
- Перечисление всех доступных плагинов Nikto с использованием опции
-list-plugins. - Понимание того, как выбрать релевантный плагин для конкретного теста.
- Использование опции
-pluginsдля указания Nikto запускать только указанные плагины. - Выполнение сфокусированного сканирования и анализ краткого, специфичного для плагина вывода.
Овладев этим навыком, вы можете значительно ускорить свой рабочий процесс тестирования и сосредоточить усилия на уязвимостях, которые наиболее важны для данной цели.


