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

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

💡 Этот учебник переведен с английского с помощью ИИ. Чтобы просмотреть оригинал, вы можете перейти на английский оригинал

Введение

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


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL kali(("Kali")) -.-> kali/KaliGroup(["Kali"]) kali/KaliGroup -.-> kali/term_ops("Kali Terminal") kali/KaliGroup -.-> kali/file_ctrl("File Management") kali/KaliGroup -.-> kali/pkg_ops("Package Management") kali/KaliGroup -.-> kali/web_ctrl("Web Services") kali/KaliGroup -.-> kali/vuln_scan("Vulnerability Scanning") kali/KaliGroup -.-> kali/nikto_ops("Nikto Scanner") subgraph Lab Skills kali/term_ops -.-> lab-552301{{"Сканирование уязвимостей Kali с помощью Nikto"}} kali/file_ctrl -.-> lab-552301{{"Сканирование уязвимостей Kali с помощью Nikto"}} kali/pkg_ops -.-> lab-552301{{"Сканирование уязвимостей Kali с помощью Nikto"}} kali/web_ctrl -.-> lab-552301{{"Сканирование уязвимостей Kali с помощью Nikto"}} kali/vuln_scan -.-> lab-552301{{"Сканирование уязвимостей Kali с помощью Nikto"}} kali/nikto_ops -.-> lab-552301{{"Сканирование уязвимостей Kali с помощью Nikto"}} end

Настройка окружения и установка Nikto

На этом первом шаге вы настроите свою рабочую среду в контейнере Kali Linux и убедитесь, что Nikto, сканер веб-уязвимостей, установлен и готов к использованию. Эта лабораторная работа проводится в LabEx VM, и когда вы откроете терминал, вы будете автоматически подключены к оболочке контейнера Kali Linux. Нет необходимости вручную запускать контейнер или входить в оболочку; среда уже настроена для вас.

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

Сначала обновите список пакетов в контейнере Kali Linux, чтобы убедиться, что у вас есть последняя информация о доступном программном обеспечении. Запустите следующую команду в терминале:

apt update

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

Get:1 http://mirrors.cloud.aliyuncs.com/kali kali-rolling InRelease [30.9 kB]
Get:2 http://mirrors.cloud.aliyuncs.com/kali kali-rolling/main amd64 Packages [18.1 MB]
...
Fetched 18.5 MB in 5s (3,700 kB/s)
Reading package lists... Done

После завершения обновления установите Nikto, если он еще не присутствует в контейнере. Используйте следующую команду для его установки:

apt install -y nikto iputils-ping

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

Reading package lists... Done
Building dependency tree... Done
...
Setting up nikto (1:2.1.5-3.1) ...

После установки убедитесь, что Nikto установлен правильно, проверив его версию. Запустите эту команду:

nikto -Version

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

Nikto 2.5.0 (LW 2.5)

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

Запуск базового веб-сканирования Nikto

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

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

Для начала запустите базовое сканирование тестового сервера с помощью Nikto. Введите следующую команду в терминале:

nikto -h testphp.vulnweb.com

Опция -h указывает хост для сканирования, в данном случае testphp.vulnweb.com. Это сканирование может занять несколько минут, в зависимости от состояния сети и конфигурации цели. Во время сканирования вы увидите вывод в терминале, показывающий прогресс. Пример вывода может выглядеть так:

- Nikto v2.5.0
---------------------------------------------------------------------------
+ Target IP:          44.228.249.3
+ Target Hostname:    testphp.vulnweb.com
+ Target Port:        80
+ Start Time:         2025-04-21 07:29:12 (GMT0)
---------------------------------------------------------------------------
+ Server: nginx/1.19.0
+ /: Retrieved x-powered-by header: PHP/5.6.40-38+ubuntu20.04.1+deb.sury.org+1.
...
---------------------------------------------------------------------------
+ 1 host(s) tested

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

Если сканирование не начинается или не появляется вывод, убедитесь, что ваше интернет-соединение активно в LabEx VM. Вы можете проверить подключение к цели, выполнив:

ping -c 4 testphp.vulnweb.com

Эта команда отправляет несколько пакетов цели, чтобы проверить, доступна ли она. Если вы видите ответы, сервер доступен; если нет, повторите сканирование или проверьте настройки сети в LabEx VM.

PING testphp.vulnweb.com (44.228.249.3) 56(84) bytes of data.
64 bytes from ec2-44-228-249-3.us-west-2.compute.amazonaws.com (44.228.249.3): icmp_seq=1 ttl=55 time=21.4 ms
64 bytes from ec2-44-228-249-3.us-west-2.compute.amazonaws.com (44.228.249.3): icmp_seq=2 ttl=55 time=21.7 ms
64 bytes from ec2-44-228-249-3.us-west-2.compute.amazonaws.com (44.228.249.3): icmp_seq=3 ttl=55 time=21.5 ms
64 bytes from ec2-44-228-249-3.us-west-2.compute.amazonaws.com (44.228.249.3): icmp_seq=4 ttl=55 time=21.5 ms

--- testphp.vulnweb.com ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3004ms
rtt min/avg/max/mdev = 21.435/21.523/21.699/0.103 ms

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

Использование опций настройки Nikto для целевого сканирования

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

На этом шаге вы узнаете, как использовать функцию настройки Nikto для настройки сканирований в среде контейнера Kali Linux.

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

nikto -h testphp.vulnweb.com -Display V

Опция -Display V показывает подробный вывод, включая информацию о настройке (tuning information). В выводе вы увидите различные категории тестов, помеченные цифрами и буквами.

Теперь давайте запустим целевое сканирование, сосредоточив внимание на распространенных уязвимостях, связанных с файлами. Выполните следующую команду:

nikto -h testphp.vulnweb.com -Tuning 2

Опция -Tuning 2 специально проверяет уязвимости, связанные с раскрытием файлов (file disclosure vulnerabilities). Это сканирование может занять несколько минут, и вы увидите вывод в терминале, аналогичный следующему:

- Nikto v2.1.5
---------------------------------------------------------------------------
+ Target IP:          44.228.249.3
+ Target Hostname:    testphp.vulnweb.com
+ Target Port:        80
---------------------------------------------------------------------------
+ Server: nginx/1.19.0
+ Scanning for File Upload vulnerabilities...
+ Multiple file upload fields found on login.php
...

Вы также можете объединить несколько опций настройки. Например, чтобы сканировать как на раскрытие файлов (2), так и на уязвимости, связанные с неправильной конфигурацией (9), используйте:

nikto -h testphp.vulnweb.com -Tuning 2,9

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

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

ping -c 4 testphp.vulnweb.com

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

Настройка форматов вывода и сохранение результатов сканирования

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

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

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

  1. Text (по умолчанию): Вывод в виде обычного текста
  2. HTML: Отформатированный HTML-отчет
  3. CSV: Значения, разделенные запятыми, для импорта в электронные таблицы
  4. XML: Структурированные XML-данные для автоматизированной обработки

Чтобы сохранить результаты сканирования в текстовом формате по умолчанию, выполните:

nikto -h testphp.vulnweb.com -o /root/nikto_text_report.txt

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

cat /root/nikto_text_report.txt

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

nikto -h testphp.vulnweb.com -Format htm -o /root/nikto_report.html

Опция -Format htm указывает Nikto отформатировать вывод как HTML. Хотя вы не можете напрямую просмотреть HTML-файл в терминале, вы можете проверить, что он был создан:

ls -l /root/nikto_report.html

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

nikto -h testphp.vulnweb.com -Format csv -o /root/nikto_report.csv

После завершения сканирования проверьте CSV-файл:

head /root/nikto_report.csv

Это отобразит первые несколько строк CSV-файла, показывая, как структурированы данные.

Эти различные форматы вывода служат разным целям:

  • Текстовые отчеты легко читать в терминале
  • HTML-отчеты визуально организованы и хорошо подходят для обмена с командами
  • Форматы CSV и XML отлично подходят для импорта в другие инструменты безопасности или базы данных

Изучив, как настраивать форматы вывода, вы расширили свои возможности по документированию и эффективному обмену своими результатами.

Расширенные опции Nikto для более глубокого сканирования

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

Давайте рассмотрим некоторые из наиболее полезных расширенных опций в Nikto:

Во-первых, давайте используем технику -evasion для обхода простых систем обнаружения вторжений (intrusion detection systems). Это может быть полезно при тестировании средств контроля безопасности:

nikto -h testphp.vulnweb.com -evasion 1

Опция -evasion 1 кодирует URL, используя случайные символы верхнего и нижнего регистра. Вы можете увидеть вывод, подобный следующему:

- Nikto v2.1.5
---------------------------------------------------------------------------
+ Target IP:          44.228.249.3
+ Target Hostname:    testphp.vulnweb.com
+ Target Port:        80
+ Evasion technique:  Random URI encoding (non-UTF8)
---------------------------------------------------------------------------
+ Server: nginx/1.19.0
...

Далее, давайте выполним сканирование с определенным портом и протоколом. Хотя мы сканировали HTTP-порт 80 по умолчанию, вы можете указать другие порты:

nikto -h testphp.vulnweb.com -port 443 -ssl

Опция -port 443 нацелена на порт 443, а -ssl указывает Nikto использовать протокол HTTPS. Для этого тестового сервера это может не вернуть результаты, поскольку HTTPS может быть не включен, но это демонстрирует, как сканировать защищенные веб-сервисы.

Для сайтов, требующих аутентификации, Nikto предоставляет опции для обработки базовой HTTP-аутентификации:

nikto -h testphp.vulnweb.com -id admin:password

Опция -id позволяет указать учетные данные в формате username:password. Для тестового сервера эти учетные данные не будут работать, но это показывает, как настроить сканирования с аутентификацией.

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

nikto -h testphp.vulnweb.com -Display V -o /root/nikto_verbose_report.txt

Опция -Display V предоставляет подробный вывод, показывая больше деталей о каждом выполненном тесте. Сохранение этого в файл с помощью -o предоставляет вам полную документацию сканирования.

Наконец, давайте объединим несколько опций для всестороннего сканирования:

nikto -h testphp.vulnweb.com -Tuning x -no404 -Format htm -o /root/final_report.html

В этой команде:

  • -Tuning x проверяет все, кроме уязвимостей типа "отказ в обслуживании" (DoS vulnerabilities)
  • -no404 уменьшает количество ложных срабатываний, не сообщая об ошибках 404
  • -Format htm сохраняет отчет в формате HTML
  • -o указывает выходной файл

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

Итог

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

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

Наконец, вы обнаружили расширенные опции для более глубокого сканирования, включая методы обхода (evasion techniques), указание порта и протокола, обработку аутентификации и подробный вывод (verbose output). Эти навыки обеспечивают прочную основу для проведения оценок веб-безопасности, будь то в образовательных целях или для профессионального тестирования безопасности.

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