Подавление вывода Nikto в консоль для скриптов

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

Введение

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

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

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

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

На этом шаге вы выполните базовое сканирование Nikto против тестового веб-сервера. Это поможет вам понять стандартное поведение и объем информации, которую он выводит в консоль.

Сначала давайте выполним стандартное сканирование. Опция -h используется для указания целевого хоста. Наш тестовый сервер запущен локально на порту 8000.

Выполните следующую команду в вашем терминале:

nikto -h http://127.0.0.1:8000

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

- 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.
+ No CGI directories found (use '-C all' to force check all possible dirs)
... (много других строк вывода) ...
+ 1 host(s) tested

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

Использование опции -Mute для подавления обычного вывода в консоли

На этом шаге вы узнаете, как использовать опцию -Mute для значительного сокращения вывода в консоли. Эта опция указывает Nikto подавлять обычные HTTP-запросы и ответы, которые он обычно отображает во время сканирования.

Опция -Mute идеально подходит для ситуаций, когда вас интересуют только окончательные результаты, а не пошаговый прогресс.

Теперь выполните то же сканирование, что и раньше, но добавьте опцию -Mute в конец команды:

nikto -h http://127.0.0.1:8000 -Mute

Наблюдайте за выводом сейчас. Он стал намного чище. Баннер и обновления статуса в реальном времени исчезли. Вы увидите только итоговое резюме результатов.

- 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.
+ No CGI directories found (use '-C all' to force check all possible dirs)
+ 1 host(s) tested

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

Объединение -Mute с -o для бесшумного сохранения результатов в файл

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

Для достижения этой цели вы можете объединить опцию -Mute с опцией -o (или --output), которая указывает файл вывода.

Выполните следующую команду. Она выполнит сканирование, подавит весь вывод в консоль и сохранит отчет в файл с именем nikto_report.txt.

nikto -h http://127.0.0.1:8000 -Mute -o nikto_report.txt

После выполнения команды вы заметите, что приглашение терминала возвращается немедленно, без вывода каких-либо результатов сканирования. Сканирование выполнялось бесшумно в фоновом режиме.

Чтобы убедиться, что отчет был сгенерирован, сначала выведите список файлов в текущем каталоге:

ls

Вы должны увидеть nikto_report.txt в списке.

nikto_report.txt  www

Теперь просмотрите содержимое файла отчета:

cat nikto_report.txt

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

Написание простого bash-скрипта, вызывающего бесшумное сканирование Nikto

На этом шаге вы создадите простой bash-скрипт для автоматизации бесшумного сканирования Nikto. Это демонстрирует, как опции -Mute и -o используются в реальном сценарии автоматизации.

Сначала создайте новый файл с именем scan.sh с помощью текстового редактора nano:

nano scan.sh

В редакторе nano добавьте следующее содержимое. Этот скрипт выведет сообщения о статусе пользователю, выполнит бесшумное сканирование Nikto и сохранит результаты в новый файл с именем script_report.txt.

#!/bin/bash

echo "Starting silent Nikto scan..."
nikto -h http://127.0.0.1:8000 -Mute -o script_report.txt
echo "Scan complete. Report saved to script_report.txt"

Нажмите Ctrl+X для выхода, Y для сохранения изменений и Enter для подтверждения имени файла.

Далее вам нужно сделать скрипт исполняемым. Используйте команду chmod для добавления прав на выполнение:

chmod +x scan.sh

Наконец, запустите ваш новый скрипт:

./scan.sh

Скрипт отобразит сообщения "Starting" и "Scan complete", но само сканирование Nikto не будет выводить ничего в консоль.

Starting silent Nikto scan...
Scan complete. Report saved to script_report.txt

Вы можете убедиться, что новый файл отчета script_report.txt был создан, снова используя команду ls.

Проверка кода завершения скрипта для определения успешности сканирования

На этом шаге вы узнаете, как проверять код завершения вашего скрипта. В скриптовых языках оболочки код завершения — это число, которое команда или скрипт возвращает после завершения выполнения. Код завершения 0 по соглашению означает, что команда выполнена успешно.

Это фундаментальное понятие для создания надежных скриптов, поскольку оно позволяет проверить, успешно ли выполнен шаг, прежде чем переходить к следующему.

Сначала снова запустите ваш скрипт:

./scan.sh

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

Выполните следующую команду:

echo $?

Вывод должен быть 0, что указывает на то, что ваш скрипт scan.sh завершился без ошибок.

0

В более продвинутых скриптах вы можете использовать эту проверку в операторе if для обработки ошибок, например:

./scan.sh
if [ $? -eq 0 ]; then
  echo "Script completed successfully."
else
  echo "Script failed with an error."
fi

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

Резюме

В этой лабораторной работе вы научились управлять выводом Nikto в консоль для эффективного написания скриптов и автоматизации.

Вы начали с наблюдения за подробным выводом стандартного сканирования Nikto. Затем вы использовали опцию -Mute для подавления несущественного вывода и опцию -o для бесшумного сохранения результатов сканирования в файл. Наконец, вы интегрировали эти опции в bash-скрипт и научились проверять код завершения скрипта для подтверждения успешного выполнения.

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