Сканирование веб-серверов с помощью Nikto

КибербезопасностьBeginner
Практиковаться сейчас

Введение

Добро пожаловать в лабораторную работу по сканированию веб-серверов с помощью Nikto.

Nikto — это широко используемый сканер уязвимостей веб-серверов с открытым исходным кодом. Он выполняет комплексное тестирование веб-серверов по множеству параметров, включая проверку более 6700 потенциально опасных файлов и программ, поиск устаревших версий более чем 1250 серверов, а также выявление проблем, специфичных для конкретных версий ПО. Хотя Nikto не предназначен для скрытной работы (он довольно «шумный» и легко обнаруживается системами обнаружения вторжений), он невероятно быстр и эффективен для проведения базового аудита безопасности.

Nikto лучше всего рассматривать как инструмент для быстрого аудита «в ширину». Он помогает оперативно выявить очевидные проблемы веб-сервера, но не заменяет тщательную ручную проверку. Его «шумность» — это плата за охват.

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

Выполнение базового сканирования Nikto

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

Для этой лабораторной работы в вашей среде уже установлен и запущен локальный веб-сервер Apache. Этот сервер будет нашей целью. Nikto работает через командную строку, и для самого простого использования требуется только флаг -h (host), за которым следует IP-адрес или доменное имя цели.

Чтобы запустить базовое сканирование вашего локального веб-сервера, выполните следующую команду в терминале:

nikto -h http://localhost

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

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

- Nikto v2.1.5
---------------------------------------------------------------------------
+ Target IP:          127.0.0.1
+ Target Hostname:    localhost
+ Target Port:        80
+ Start Time:         2026-10-25 10:00:00 (GMT0)
---------------------------------------------------------------------------
+ Server: Apache/2.4.52 (Ubuntu)
+ The anti-clickjacking X-Frame-Options header is not present.
+ The X-XSS-Protection header is not defined.
+ The X-Content-Type-Options header is not set.
+ No CGI Directories found (use '-C all' to force check all possible dirs)
+ /admin.txt: This might be interesting...
+ /info.php: Output from the phpinfo() function was found.
+ 8000 requests: 0 error(s) and 6 item(s) reported on remote host
+ End Time:           2026-10-25 10:00:15 (GMT0) (15 seconds)
---------------------------------------------------------------------------
+ 1 host(s) tested

Вывод предоставляет массу полезной информации. Он определяет версию серверного ПО (Apache/2.4.52), указывает на отсутствие заголовков безопасности (таких как X-Frame-Options) и подсвечивает потенциально конфиденциальные файлы, оставленные на сервере, например /admin.txt и /info.php.

Игнорирование ложных срабатываний (настройка)

В этом шаге вы научитесь настраивать сканирование Nikto.

Поскольку Nikto проверяет тысячи потенциальных проблем, сканирование по умолчанию иногда может занимать много времени и создавать много «шума» или ложных срабатываний. Чтобы сделать сканирование быстрее и целенаправленнее, в Nikto предусмотрен флаг -Tuning.

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

Флаг -Tuning позволяет точно указать, какие категории тестов вы хотите запустить. Каждая категория представлена цифрой или буквой. Например:

  • 1 - Интересный файл / Встречается в логах
  • 2 - Ошибка конфигурации / Стандартный файл
  • 3 - Раскрытие информации
  • 4 - Инъекции (XSS/Script/HTML)
  • 9 - SQL-инъекция

Если вы хотите проверить только ошибки конфигурации (2) и раскрытие информации (3), вы можете объединить эти цифры.

Выполните следующую команду для проведения настроенного сканирования, которое ищет только ошибки конфигурации и раскрытие информации:

nikto -h http://localhost -Tuning 23

Вы заметите, что это сканирование завершается гораздо быстрее, чем базовое, поскольку оно пропускает сотни нерелевантных тестов, таких как SQL-инъекции или проверки на отказ в обслуживании (DoS).

- Nikto v2.1.5
---------------------------------------------------------------------------
+ Target IP:          127.0.0.1
+ Target Hostname:    localhost
+ Target Port:        80
+ Start Time:         2026-10-25 10:05:00 (GMT0)
---------------------------------------------------------------------------
+ Server: Apache/2.4.52 (Ubuntu)
+ /admin.txt: This might be interesting...
+ /info.php: Output from the phpinfo() function was found.
+ 1500 requests: 0 error(s) and 3 item(s) reported on remote host
+ End Time:           2026-10-25 10:05:03 (GMT0) (3 seconds)
---------------------------------------------------------------------------
+ 1 host(s) tested

Используя флаг -Tuning, вы можете адаптировать Nikto под свои конкретные задачи аудита, экономя время и уменьшая количество «мусора» в отчетах.

Сохранение вывода в отчет

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

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

Чтобы сохранить отчет, необходимо использовать два флага:

  • -o (или -output): Указывает путь к файлу и имя, под которым будет сохранен отчет.
  • -Format: Указывает формат отчета (например, htm, csv, xml, txt).

Давайте запустим сканирование и сохраним вывод в виде HTML-файла в директории вашего проекта. Выполните следующую команду:

nikto -h http://localhost -Format htm -o /home/labex/project/report.html

Во время сканирования вы по-прежнему будете видеть стандартный вывод в терминале. Как только сканирование завершится, Nikto создаст HTML-файл по указанному вами пути.

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

ls -l /home/labex/project/report.html
-rw-r--r-- 1 root root 4521 Oct 25 10:10 /home/labex/project/report.html

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

Анализ отчета об уязвимостях Nikto

В этом заключительном шаге вы научитесь быстро анализировать созданный отчет с помощью инструментов командной строки.

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

Давайте поищем в HTML-отчете, который мы создали на предыдущем шаге, информацию о том, успешно ли Nikto задокументировал раскрытие статуса сервера Apache.

Используйте команду grep для поиска слова "server-status" внутри вашего отчета:

grep "server-status" /home/labex/project/report.html
    <td>/server-status: This reveals Apache information. Comment out appropriate line in httpd.conf or restrict access to allowed hosts.</td>

Теперь давайте проверим, зафиксировал ли отчет отсутствие заголовка безопасности X-Frame-Options. Этот заголовок критически важен для предотвращения атак типа clickjacking.

grep "X-Frame-Options" /home/labex/project/report.html
    <td>The anti-clickjacking X-Frame-Options header is not present.</td>

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

Резюме

Поздравляем! Вы успешно завершили лабораторную работу по сканированию веб-серверов с помощью Nikto.

В этой лабораторной работе вы научились:

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

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