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

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

Введение

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

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

Определение нестандартного HTTP-порта на цели

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

Просканируем диапазон портов на нашей локальной машине (localhost), чтобы найти настроенный нами веб-сервер. Мы будем сканировать диапазон портов с 8000 по 9000.

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

nmap -p 8000-9000 localhost

Вы должны увидеть вывод, похожий на следующий, указывающий, что порты 8001 и 8088 открыты.

Starting Nmap 7.80 ( https://nmap.org ) at 2023-10-27 10:00 UTC
Nmap scan report for localhost (127.0.0.1)
Host is up (0.000087s latency).
Not shown: 98 closed ports
PORT     STATE SERVICE
8001/tcp open  vcom-tunnel
8088/tcp open  radan-http

Nmap done: 1 IP address (1 host up) scanned in 0.04 seconds

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

Использование флага -p для указания целевого порта

На этом шаге мы узнаем о конкретном флаге Nikto, используемом для сканирования портов. По умолчанию Nikto сканирует порт 80. Чтобы направить Nikto на сканирование другого порта, вы должны использовать опцию командной строки -p (или -port).

Синтаксис прост:

nikto -h <целевой_хост> -p <номер_порта>

Например, чтобы просканировать хост localhost на порту 8088, который мы обнаружили на предыдущем шаге, структура команды будет следующей:

nikto -h localhost -p 8088

Эта команда указывает Nikto выполнить полный набор тестов, но направить их все на порт 8088 хоста localhost. На следующем шаге вы выполните эту команду и увидите результаты.

Запуск сканирования на хосте и указанном порту

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

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

nikto -h localhost -p 8088

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

- Nikto v2.1.6
---------------------------------------------------------------------------
+ Target IP:          127.0.0.1
+ Target Hostname:    localhost
+ Target Port:        8088
+ Start Time:         2023-10-27 10:05:10 (GMT0)
---------------------------------------------------------------------------
+ Server: SimpleHTTP/0.6 Python/3.10.12
+ The anti-clickjacking X-Frame-Options header is not present.
+ The X-XSS-Protection header is not defined. This header can hint to the user agent to protect against some forms of XSS
+ 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)
+ OSVDB-3092: /cgi-bin/: This might be interesting...
+ 7558 requests: 0 error(s) and 5 item(s) reported on remote host
+ End Time:           2023-10-27 10:05:25 (GMT0) (15 seconds)
---------------------------------------------------------------------------
+ 1 host(s) tested

Вы успешно выполнили целевое сканирование уязвимостей на нестандартном порту.

Анализ результатов для нестандартного сервиса

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

Давайте рассмотрим ключевые выводы из вывода предыдущего шага:

  • + Target Port: 8088: Это подтверждает, что Nikto правильно нацелился на указанный вами порт.
  • + Server: SimpleHTTP/0.6 Python/3.10.12: Это очень ценная информация. Nikto определил программное обеспечение и версию веб-сервера. В данном случае это простой сервер, предоставляемый Python. Знание серверной технологии помогает злоумышленнику сосредоточиться на конкретных эксплойтах.
  • Отсутствующие заголовки безопасности: Строки, такие как The anti-clickjacking X-Frame-Options header is not present, указывают на неправильные настройки безопасности. Эти заголовки помогают защитить веб-приложение от распространенных атак, таких как clickjacking и межсайтовый скриптинг (XSS).
  • + OSVDB-3092: /cgi-bin/: This might be interesting...: Nikto обнаружил каталог с именем cgi-bin. Этот каталог традиционно содержит исполняемые скрипты, что делает его ценной целью для злоумышленников, ищущих уязвимости.

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

Сканирование диапазона портов на одном хосте

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

Флаг -p также принимает диапазон портов, указанный с помощью дефиса. Синтаксис следующий:

nikto -h <целевой_хост> -p <начальный_порт>-<конечный_порт>

Давайте используем это для сканирования диапазона 8000-8100 на localhost. Этот диапазон включает оба наших запущенных веб-сервера (на портах 8001 и 8088).

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

nikto -h localhost -p 8000-8100

Nikto теперь будет перебирать каждый порт в указанном диапазоне. Сначала он просканирует порт 8000, ничего не найдет, затем перейдет к порту 8001, обнаружит веб-сервер, просканирует его и сообщит результаты. Этот процесс будет продолжаться до тех пор, пока он не достигнет порта 8100, попутно сканируя сервер на порту 8088.

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

- Nikto v2.1.6
---------------------------------------------------------------------------
+ Target IP:          127.0.0.1
+ Target Hostname:    localhost
+ Target Port:        8001
... (Results for port 8001) ...
---------------------------------------------------------------------------
+ Target IP:          127.0.0.1
+ Target Hostname:    localhost
+ Target Port:        8088
... (Results for port 8088) ...
---------------------------------------------------------------------------
+ 2 host(s) tested

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

Резюме

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

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