Введение
Nikto — популярный сканер веб-серверов с открытым исходным кодом, который выполняет комплексные тесты веб-серверов на наличие множества элементов, включая более 6700 потенциально опасных файлов/программ, проверяет устаревшие версии более чем 1250 серверов и проблемы, специфичные для версий, на более чем 270 серверах.
Полное сканирование Nikto может занимать много времени, особенно на больших и сложных веб-приложениях. Если вам нужны результаты сканирования в нескольких форматах (например, один для технического отчета, а другой для презентации), повторное выполнение сканирования неэффективно. Nikto предоставляет мощную функцию для сохранения результатов сканирования и последующего их "воспроизведения" для генерации отчетов в различных форматах без повторного сканирования цели.
В этой лабораторной работе вы научитесь выполнять первоначальное сканирование, сохранять результаты в XML-файл, а затем использовать опцию -replay для эффективной генерации нового отчета в формате HTML.
Выполнение сканирования и сохранение вывода в XML-файл
На этом шаге вы выполните базовое сканирование Nikto против локального тестового веб-сервера. Ключевым моментом является сохранение вывода в файл в структурированном формате, таком как XML, который Nikto сможет разобрать позже. Мы будем использовать опцию -o для указания выходного файла и -Format для определения типа файла.
Сначала убедитесь, что вы находитесь в каталоге ~/project. Наш скрипт настройки уже запустил простой веб-сервер на localhost на порту 8000.
Теперь выполните следующую команду в терминале, чтобы просканировать локальный веб-сервер и сохранить результаты в файл с именем scan_results.xml:
nikto -h http://localhost:8000 -o scan_results.xml -Format xml
Разберем эту команду:
nikto: Команда для запуска сканера Nikto.-h http://localhost:8000: Указывает хост (цель) для сканирования.-o scan_results.xml: Указывает имя выходного файла.-Format xml: Указывает Nikto сохранить вывод в формате XML.
Сканирование займет некоторое время. В вашем терминале вы увидите вывод, похожий на следующий (детали могут отличаться):
- Nikto v2.5.0
---------------------------------------------------------------------------
+ Target IP: 127.0.0.1
+ Target Hostname: localhost
+ 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.
+ No CGI directories found (use '-C all' to force check all possible dirs)
+ Allowed HTTP Methods: GET, HEAD, OPTIONS
+ Public HTTP Methods: GET, HEAD, OPTIONS
...
+ 1 host(s) tested
После завершения команды в вашем текущем каталоге (~/project) будет создан файл с именем scan_results.xml.
Использование опции -replay с сохраненным XML-файлом
На этом шаге вы научитесь использовать функцию -replay в Nikto. Эта опция позволяет Nikto анализировать ранее сохраненный XML-файл сканирования и отображать результаты без повторного подключения к целевому серверу. Это чрезвычайно полезно для быстрого просмотра результатов или в ситуациях, когда цель больше не доступна онлайн.
Чтобы воспроизвести только что сохраненное сканирование, используйте следующую команду:
nikto -replay scan_results.xml
Эта команда указывает Nikto прочитать файл scan_results.xml и вывести результаты в терминал. Вывод будет выглядеть почти идентично выводу оригинального сканирования в терминале, но будет сгенерирован мгновенно из файла.
- Nikto v2.5.0
---------------------------------------------------------------------------
+ Target IP: 127.0.0.1
+ Target Hostname: localhost
+ 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
Обратите внимание, как быстро завершается команда. Это демонстрирует, что Nikto читает данные из локального файла, а не выполняет новое сетевое сканирование.
Использование опции -Format htm для создания нового HTML-отчета
На этом шаге вы объедините опцию -replay с опцией -Format для создания отчета в новом формате. Это суть данного лабораторного занятия: вы можете взять одно сохраненное сканирование и создать на его основе несколько типов отчетов.
Предположим, вам теперь нужен красиво оформленный HTML-отчет для презентации. Вы можете сгенерировать его непосредственно из сохраненного файла scan_results.xml.
Выполните следующую команду:
nikto -replay scan_results.xml -o report.html -Format htm
Вот разбивка новой команды:
nikto -replay scan_results.xml: Эта часть такая же, как и в предыдущем шаге; она указывает Nikto использовать сохраненные данные.-o report.html: Это указывает новый выходной файл с именемreport.html.-Format htm: Это указывает Nikto форматировать вывод как HTML-файл.
Эта команда выполнится очень быстро и выдаст минимальный вывод в терминал, поскольку она записывает отчет непосредственно в файл report.html.
- Nikto v2.5.0
+ 1 host(s) tested
Теперь вы успешно сгенерировали новый отчет в другом формате, не выполняя повторное сканирование цели.
Проверка создания нового отчета без повторного сканирования
На этом шаге вы проверите, был ли создан новый HTML-отчет, и убедитесь, что он содержит корректное HTML-содержимое. Это укрепит понимание того, что предыдущая команда сгенерировала отчет на основе файла.
Сначала выведите список файлов в текущем каталоге (~/project), чтобы увидеть недавно созданный отчет.
ls -l
В выводе вы должны увидеть как исходный XML-файл, так и новый HTML-файл:
total 12
-rw-r--r-- 1 labex labex 68 ... index.html
-rw-r--r-- 1 labex labex ... ... report.html
-rw-r--r-- 1 labex labex ... ... scan_results.xml
Затем, чтобы быстро проверить содержимое нового отчета, вы можете использовать команду head для просмотра первых нескольких строк файла report.html.
head report.html
Вывод покажет начало HTML-документа, подтверждая, что файл был создан корректно.
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Nikto Report</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<style type="text/css">
...
Самое важное наблюдение — это скорость. Команда из Шага 3 завершилась почти мгновенно, в то время как оригинальное сканирование из Шага 1 заняло заметное время. Это является неоспоримым доказательством того, что вы переформатируете существующие данные, а не выполняете новое, трудоемкое сканирование.
Понимание эффективности повторного воспроизведения сохраненных результатов
На этом заключительном шаге вы закрепите свое понимание эффективности, полученной от использования функции повторного воспроизведения. Представьте, что вам также нужны результаты в формате CSV (Comma-Separated Values) для импорта в электронную таблицу для дальнейшего анализа. Вместо того чтобы запускать еще одно сканирование, вы можете просто сгенерировать еще один отчет из того же файла scan_results.xml.
Выполните следующую команду для создания отчета в формате CSV:
nikto -replay scan_results.xml -o report.csv -Format csv
Эта команда структурирована так же, как и команда для HTML, но указывает новое имя файла (report.csv) и новый формат (csv). Опять же, она завершится за секунды.
Теперь снова выведите список файлов, чтобы увидеть все сгенерированные отчеты:
ls -l
Теперь вы увидите три файла отчетов, все они сгенерированы из одного сканирования:
total 16
-rw-r--r-- 1 labex labex 68 ... index.html
-rw-r--r-- 1 labex labex ... ... report.csv
-rw-r--r-- 1 labex labex ... ... report.html
-rw-r--r-- 1 labex labex ... ... scan_results.xml
Этот рабочий процесс — сканирование один раз, отчеты много раз — является краеугольным камнем эффективной оценки уязвимостей. Для крупномасштабных сканирований, которые могут занимать часы, эта функция экономит огромное количество времени и вычислительных ресурсов, позволяя вам сосредоточиться на анализе результатов, а не ждать завершения сканирований.
Резюме
В этой лабораторной работе вы освоили высокоэффективный рабочий процесс для работы с результатами сканирования Nikto. Вы успешно выполнили сканирование веб-сервера и сохранили его результаты в XML-файл. Затем вы использовали мощную опцию -replay для обработки этих сохраненных данных и генерации новых отчетов в различных форматах (HTML и CSV) без необходимости повторного запуска длительного сетевого сканирования.
Ключевые команды и концепции, которые вы отработали:
nikto -h [host] -o [file.xml] -Format xml: Для выполнения сканирования и сохранения результатов.nikto -replay [file.xml] -o [new_report] -Format [htm/csv/txt]: Для генерации новых отчетов из сохраненных данных.
Этот метод разделения этапа сканирования и этапа отчетности имеет решающее значение для эффективного тестирования безопасности и анализа.


