Введение
Nikto — популярный сканер веб-серверов с открытым исходным кодом, который выполняет комплексные тесты веб-серверов на наличие множества элементов, включая более 6700 потенциально опасных файлов/программ, проверяет устаревшие версии более чем 1250 серверов и проблемы, специфичные для версий, на более чем 270 серверах.
При запуске сканирования результаты обычно отображаются непосредственно в терминале. Для документирования, дальнейшего анализа или обмена с командой важно сохранить этот вывод в файл. Nikto предоставляет гибкие опции для сохранения отчетов сканирования в различных форматах.
В этой лаборатории вы научитесь сохранять результаты сканирования Nikto в файл. Вы попрактикуетесь в сохранении вывода в форматах обычного текста (.txt) и значений, разделенных запятыми (.csv), путем сканирования простого локально работающего веб-сервера.
Выбор формата вывода в виде обычного текста
На этом шаге вы изучите различные форматы вывода, которые поддерживает Nikto. Nikto использует плагины для своих возможностей отчетности, и вы можете перечислить их, чтобы увидеть доступные форматы.
Опция -list-plugins показывает все доступные плагины, включая те, что предназначены для отчетности. Давайте выполним эту команду, чтобы увидеть, какие форматы мы можем использовать.
Выполните следующую команду в вашем терминале:
nikto -list-plugins
Вы увидите длинный список плагинов. Прокрутите вывод и найдите раздел "Reporting". Этот раздел перечисляет все форматы файлов, в которые вы можете сохранить результаты сканирования.
...
Reporting
--------------------------------------------------
csv - Comma-separated value
htm - HTML Report
json - JSON Report
nbe - Nessus NBE format
sql - SQL (generic)
txt - Plain text
xml - XML
...
Как вы видите, txt указан как формат "Plain text" (обычный текст). Мы начнем с использования этого формата.
Использование флага -o для указания имени выходного файла
На этом шаге вы узнаете о флаге, используемом для указания выходного файла. Чтобы сообщить Nikto, куда сохранить отчет, вы используете флаг -o (или --output).
Этот флаг должен использоваться вместе с флагом -Format, который указывает формат файла, выбранный вами на предыдущем шаге. Базовый синтаксис выглядит так:
nikto -h <цель> -Format <формат> -o <имя_файла>
Давайте используем опцию -help, чтобы увидеть официальное описание флага -o. Вы можете перенаправить вывод в grep, чтобы быстро найти нужную строку.
Выполните эту команду:
nikto -help | grep -- "-o "
Вывод покажет вам использование флагов -o и --output.
-o, -output <file> Write output to this file
Теперь вы знаете, как указать как формат, так и имя файла. На следующем шаге мы объединим их, чтобы выполнить сканирование и сохранить результаты.
Запуск сканирования и создание текстового файла
На этом шаге вы выполните сканирование и сохраните вывод в файл обычного текста. Мы объединим флаги и информацию из предыдущих шагов.
Наша цель — локальный веб-сервер, работающий на порту 8000. URL этого сервера: http://127.0.0.1:8000.
- Целевой хост (
-h):http://127.0.0.1:8000 - Формат (
-Format):txt - Выходной файл (
-o):scan_report.txt
Теперь составьте полную команду и выполните ее в терминале. Все операции должны выполняться в каталоге по умолчанию ~/project.
nikto -h http://127.0.0.1:8000 -Format txt -o scan_report.txt
Nikto начнет сканирование. Вы увидите прогресс сканирования в терминале, но окончательный отчет будет записан в файл scan_report.txt. Пожалуйста, дождитесь завершения сканирования.
- Nikto v2.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
+ The anti-clickjacking X-Frame-Options header is not present.
+ The X-Content-Type-Options header is not set. This could allow the user agent to render the content of the site in a different fashion to the MIME type.
...
+ 1 host(s) tested
После завершения команды в вашем текущем каталоге (~/project) будет создан новый файл с именем scan_report.txt.
Проверка содержимого сохраненного текстового файла
На этом шаге вы проверите, были ли результаты сканирования корректно сохранены в текстовый файл. Вы можете использовать утилиту командной строки, такую как cat, для отображения содержимого файла.
Выполните следующую команду, чтобы просмотреть содержимое scan_report.txt:
cat scan_report.txt
Вывод будет представлять собой полный отчет Nikto, который должен быть очень похож на вывод, который вы видели в терминале во время сканирования.
Nikto V2.5.0
================================================================
+-----------+
| General |
+-----------+
Date: ...
Start Time: ...
End Time: ...
Version: 2.5.0
...
+-----------+
| Target |
+-----------+
IP: 127.0.0.1
Hostname: 127.0.0.1
Port: 8000
...
+-----------+
| Findings |
+-----------+
+ The anti-clickjacking X-Frame-Options header is not present.
...
Вы успешно сохранили отчет сканирования Nikto в файл обычного текста. Теперь этот файл можно легко хранить, архивировать или передавать.
Повторение процесса для сохранения в формате CSV
На этом шаге вы повторите процесс сохранения результатов сканирования в другом формате: CSV (Comma-Separated Values). Формат CSV является структурированным и идеально подходит для импорта в электронные таблицы, такие как Excel или LibreOffice Calc, или для обработки с помощью скриптов.
Процедура почти идентична. Вам просто нужно изменить значение для флага -Format на csv и указать новое имя файла с расширением .csv.
- Целевой хост (
-h):http://127.0.0.1:8000 - Формат (
-Format):csv - Выходной файл (
-o):scan_report.csv
Выполните следующую команду для создания отчета в формате CSV:
nikto -h http://127.0.0.1:8000 -Format csv -o scan_report.csv
После завершения сканирования будет создан новый файл с именем scan_report.csv. Давайте посмотрим его содержимое с помощью команды cat.
cat scan_report.csv
Вывод будет структурирован с полями, разделенными запятыми, что является стандартом для файлов CSV.
"Host","IP","Port","Banner","Date","Vulnerability","Method","Description","Reference"
"127.0.0.1","127.0.0.1","8000","","...","OSVDB-3233: The anti-clickjacking X-Frame-Options header is not present.","GET","",""
"127.0.0.1","127.0.0.1","8000","","...","OSVDB-3092: The X-Content-Type-Options header is not set. This could allow the user agent to render the content of the site in a different fashion to the MIME type.","GET","",""
...
Теперь вы успешно сгенерировали отчет в двух разных форматах, демонстрируя гибкость опций вывода Nikto.
Резюме
В этой лабораторной работе вы научились управлять выводом сканера веб-серверов Nikto. Вы успешно просканировали локальный веб-сервер и сохранили результаты в файлы для последующего использования.
В частности, вы практиковались в:
- Перечислении доступных форматов вывода с помощью опции
-list-plugins. - Использовании флагов
-oи-Formatдля управления выходным файлом и его форматом. - Генерации отчета сканирования в обычном тексте (
.txt). - Генерации отчета сканирования в формате значений, разделенных запятыми (
.csv).
Этот навык является фундаментальным для любого специалиста по безопасности, которому необходимо документировать результаты, проводить офлайн-анализ или интегрировать результаты сканирования в более крупные системы отчетности.


