Сохранение результатов сканирования в файл с помощью Nikto

Kali LinuxBeginner
Практиковаться сейчас

Введение

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).

Этот навык является фундаментальным для любого специалиста по безопасности, которому необходимо документировать результаты, проводить офлайн-анализ или интегрировать результаты сканирования в более крупные системы отчетности.