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

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

Введение

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

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

Настройка среды и установка Nikto

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

Для начала разберемся с устройством среды. Виртуальная машина LabEx работает на независимом облачном хосте с предустановленным 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 для выявления потенциальных проблем безопасности на веб-сервере. Поскольку при открытии терминала в LabEx вы уже находитесь в оболочке контейнера Kali Linux, вручную запускать его не требуется.

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

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

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

При сканировании testphp.vulnweb.com с помощью nikto вы можете столкнуться с сообщениями об ошибках. Это ожидаемое поведение; сосредоточьтесь на ключевой информации в отчете.

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

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

ping -c 4 testphp.vulnweb.com

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

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.

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

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

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

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

nikto -h testphp.vulnweb.com -Display V

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

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

nikto -h testphp.vulnweb.com -Tuning 2

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

- 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 предоставляет несколько вариантов форматирования и сохранения отчетов.

На этом этапе вы научитесь генерировать отчеты в различных форматах прямо в терминале контейнера 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.

Рассмотрим некоторые из наиболее полезных продвинутых опций:

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

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 позволяет указать учетные данные в формате логин:пароль. Для тестового сервера эти данные не подойдут, но команда показывает, как настраивать сканирование с авторизацией.

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

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-атак.
  • -no404 уменьшает количество ложных срабатываний, не сообщая об ошибках 404.
  • -Format htm сохраняет отчет в формате HTML.
  • -o указывает выходной файл.

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

Резюме

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

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

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

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