Управление сканированием каталогов CGI в Nikto

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

Введение

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

Одной из его ключевых особенностей является сканирование каталогов Common Gateway Interface (CGI). Скрипты CGI могут стать источником значительных уязвимостей, если они не защищены должным образом. По умолчанию Nikto сканирует предопределенный список общих каталогов CGI. Однако для более эффективного и целенаправленного сканирования крайне важно знать, как управлять этим поведением.

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

Понимание поведения Nikto по умолчанию при сканировании каталогов CGI

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

Сначала давайте настроим простой веб-сервер для сканирования. Для этого мы будем использовать встроенный модуль Python http.server.

Перейдите в каталог webroot, который мы подготовили для вас.

cd ~/project/webroot

Теперь запустите веб-сервер на порту 8000. Символ & в конце команды запустит сервер в фоновом режиме, позволяя вам продолжать использовать терминал.

python3 -m http.server 8000 &

Вы должны увидеть сообщение о том, что сервер запущен.

Serving HTTP on 0.0.0.0 port 8000 (http://0.0.0.0:8000/) ...

Пока сервер работает, выполним базовое сканирование Nikto. Опция -h используется для указания целевого хоста.

nikto -h http://localhost:8000

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

- Nikto v2.x
---------------------------------------------------------------------------
+ Target IP:          127.0.0.1
+ Target Hostname:    localhost
+ 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-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)
+ "robots.txt" not found.
+ OSVDB-3233: /: HTTP TRACE method is active, suggesting the host is vulnerable to XST
+ OSVDB-3092: /: This might be interesting...
+ /index.html: This might be interesting...
+ 7 items found on remote host
+ End Time:           ...
---------------------------------------------------------------------------
+ 1 host(s) tested

Примечание: В некоторых более новых версиях Nikto или конфигурациях стандартное сканирование может не сообщать о /cgi-bin/, если его не вызовет определенный тест. Главное — понять, что проверяется стандартный набор путей. Мы принудительно выполним эти проверки на следующих шагах, чтобы увидеть более четкие результаты.

Использование -Cgidirs none для отключения сканирования каталогов CGI

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

Опция -Cgidirs управляет сканированием CGI. Установив ее значение none, вы указываете Nikto полностью пропустить эту часть теста.

Выполните следующую команду для повторного сканирования сервера, но на этот раз с отключенным сканированием CGI:

nikto -h http://localhost:8000 -Cgidirs none

Изучите вывод. Вы заметите, что он очень похож на предыдущее сканирование, но явно подтверждает, что каталоги CGI не сканировались. Строка No CGI directories found все еще будет присутствовать, но на этот раз потому, что мы указали Nikto не искать их. Это делает сканирование немного быстрее.

- Nikto v2.x
---------------------------------------------------------------------------
+ Target IP:          127.0.0.1
+ Target Hostname:    localhost
+ 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-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
+ CGI directory scanning has been disabled.
+ "robots.txt" not found.
+ OSVDB-3233: /: HTTP TRACE method is active, suggesting the host is vulnerable to XST
+ OSVDB-3092: /: This might be interesting...
+ /index.html: This might be interesting...
+ 7 items found on remote host
+ End Time:           ...
---------------------------------------------------------------------------
+ 1 host(s) tested

Обратите внимание на строку + CGI directory scanning has been disabled., которая подтверждает, что наша команда сработала как ожидалось.

Использование -Cgidirs all для сканирования всех настроенных каталогов CGI

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

Выполните сканирование Nikto с опцией -Cgidirs all:

nikto -h http://localhost:8000 -Cgidirs all

Теперь внимательно изучите вывод. На этот раз Nikto явно сообщит о каталоге /cgi-bin/, потому что наш тестовый сервер его имеет, а флаг all гарантирует его проверку.

- Nikto v2.x
---------------------------------------------------------------------------
+ Target IP:          127.0.0.1
+ Target Hostname:    localhost
+ 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-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
+ OSVDB-3233: /cgi-bin/: Directory indexing found.
+ OSVDB-3092: /cgi-bin/: This might be interesting...
+ "robots.txt" not found.
+ OSVDB-3233: /: HTTP TRACE method is active, suggesting the host is vulnerable to XST
+ OSVDB-3092: /: This might be interesting...
+ /index.html: This might be interesting...
+ 8 items found on remote host
+ End Time:           ...
---------------------------------------------------------------------------
+ 1 host(s) tested

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

Указание пользовательского пути к каталогу CGI для сканирования

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

Наша установка включает каталог с именем /cgi-custom/. Стандартное сканирование Nikto его не найдет. Мы можем указать Nikto проверить его конкретно, передав путь опции -Cgidirs.

Выполните следующую команду для сканирования только каталога /cgi-custom/:

nikto -h http://localhost:8000 -Cgidirs /cgi-custom/

Просмотрите вывод. Nikto теперь сообщит, что он нашел /cgi-custom/. Он не сообщит о /cgi-bin/, потому что мы ограничили сканирование только указанным нами путем.

- Nikto v2.x
---------------------------------------------------------------------------
+ Target IP:          127.0.0.1
+ Target Hostname:    localhost
+ 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-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
+ OSVDB-3233: /cgi-custom/: Directory indexing found.
+ OSVDB-3092: /cgi-custom/: This might be interesting...
+ "robots.txt" not found.
+ OSVDB-3233: /: HTTP TRACE method is active, suggesting the host is vulnerable to XST
+ OSVDB-3092: /: This might be interesting...
+ /index.html: This might be interesting...
+ 8 items found on remote host
+ End Time:           ...
---------------------------------------------------------------------------
+ 1 host(s) tested

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

Сравнение результатов различных стратегий сканирования CGI

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

Вы выполнили четыре различных типа сканирования:

  1. Стандартное сканирование (nikto -h ...): Сканировался стандартный список распространенных каталогов. В нашем случае /cgi-bin/ изначально не был отмечен, хотя каталог присутствовал. Это сканирование обеспечивает хорошую базовую линию.
  2. Без сканирования CGI (-Cgidirs none): Полностью пропущены все проверки каталогов CGI. В выводе было подтверждено, что CGI directory scanning has been disabled (сканирование каталогов CGI отключено). Это самый быстрый вариант, если вам не нужно проверять CGI.
  3. Сканирование всех каталогов CGI (-Cgidirs all): Принудительная проверка всех каталогов CGI, известных Nikto. Это сканирование успешно нашло и сообщило о нашем каталоге /cgi-bin/. Это самый тщательный, но и самый медленный вариант.
  4. Сканирование пользовательских каталогов CGI (-Cgidirs /cgi-custom/): Сканировался только конкретный каталог /cgi-custom/, и он был успешно найден, при этом игнорировались все остальные, такие как /cgi-bin/. Это наиболее целенаправленный подход.

Выбор правильной стратегии зависит от вашей цели:

  • Для быстрого обзора часто достаточно стандартного сканирования.
  • Чтобы быть абсолютно тщательным, используйте all.
  • Чтобы сэкономить время на сервере, где заведомо нет CGI, используйте none.
  • Для пользовательских приложений наиболее эффективным методом является указание пользовательских путей.

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

kill %1

Вы увидите сообщение "Terminated" (Завершено), подтверждающее, что сервер был остановлен.

Итоги

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

Вы успешно выполнили:

  • Стандартное сканирование Nikto.
  • Полное отключение сканирования CGI с помощью -Cgidirs none.
  • Комплексное сканирование всех известных каталогов CGI с помощью -Cgidirs all.
  • Целевое сканирование конкретного нестандартного каталога путем предоставления пользовательского пути.

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