Выполнение сканирования с Basic Authentication в Nikto

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

Введение

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

Многие веб-приложения имеют ограниченные области доступа, которые доступны только после того, как пользователь предоставит действительные учетные данные. HTTP Basic Authentication (Базовая аутентификация HTTP) — один из самых простых методов, используемых для защиты этих областей. Для проведения тщательной оценки безопасности крайне важно сканировать эти аутентифицированные разделы.

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

Определение веб-ресурса, защищенного Basic Authentication

На этом шаге вы сначала проверите, действительно ли целевой веб-ресурс защищен Basic Authentication. Распространенный способ проверки — использование команды curl для просмотра HTTP-заголовков, возвращаемых сервером при попытке доступа к ресурсу.

Незащищенный ресурс вернет статус 200 OK, тогда как защищенный вернет статус 401 Unauthorized вместе с заголовком WWW-Authenticate, указывающим тип требуемой аутентификации.

Попробуем получить доступ к защищенному каталогу http://localhost/protected/ с помощью curl с опцией -I, которая извлекает только HTTP-заголовки.

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

curl -I http://localhost/protected/

Вы должны увидеть вывод, похожий на следующий. Обратите внимание на статус HTTP/1.1 401 Unauthorized и заголовок WWW-Authenticate: Basic realm="...". Это подтверждает, что каталог защищен.

HTTP/1.1 401 Unauthorized
Date: [current_date]
Server: Apache/2.4.52 (Ubuntu)
WWW-Authenticate: Basic realm="Restricted Content"
Content-Type: text/html; charset=iso-8859-1

Получение необходимых имени пользователя и пароля

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

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

Учетные данные:

  • Имя пользователя: labex
  • Пароль: P@ssw0rd123

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

Использование опции -id в формате 'user:password'

На этом шаге вы узнаете об опции -id в Nikto, которая используется для предоставления учетных данных для HTTP-аутентификации. Формат представляет собой одну строку, содержащую имя пользователя и пароль, разделенные двоеточием (:).

Синтаксис: -id <username>:<password>

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

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

curl --user labex:P@ssw0rd123 http://localhost/protected/

Если учетные данные верны, сервер предоставит доступ и вернет содержимое страницы, как показано ниже. Это подтверждает, что вы можете успешно аутентифицироваться.

This is a protected page accessible only with credentials.

Теперь, когда вы подтвердили учетные данные и поняли формат, вы готовы использовать их в сканировании Nikto.

Запуск аутентифицированного сканирования защищенной области

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

Структура команды будет следующей:

  • nikto: Программа для запуска.
  • -h http://localhost/protected/: Опция -h (host), указывающая непосредственно на каталог, который вы хотите сканировать.
  • -id labex:P@ssw0rd123: Опция -id с именем пользователя и паролем.

Теперь выполните полную команду в вашем терминале. Сканирование может занять несколько минут.

nikto -h http://localhost/protected/ -id labex:P@ssw0rd123

Nikto начнет сканирование. Поскольку вы предоставили действительные учетные данные, он сможет получить доступ к http://localhost/protected/ и проверить наличие уязвимостей в этом каталоге. Вывод будет выглядеть примерно так:

- Nikto v2.5.0
---------------------------------------------------------------------------
+ Target IP:          127.0.0.1
+ Target Hostname:    localhost
+ Target Port:        80
+ Start Time:         [scan_start_time]
---------------------------------------------------------------------------
+ Server: Apache/2.4.52 (Ubuntu)
+ /: Отсутствует заголовок X-Frame-Options, предотвращающий атаки clickjacking.
+ /: Заголовок X-Content-Type-Options не установлен. Это может позволить пользовательскому агенту отображать содержимое сайта иначе, чем указано MIME-типом.
+ /: Сервер может раскрывать inode через ETags, найден заголовок с файлом /, поля: 0x1ed 0x5f7e21e8a2e80
+ OPTIONS: Разрешенные HTTP-методы: GET, POST, OPTIONS, HEAD.
+ /: Apache/2.4.52 выглядит устаревшим (текущая версия как минимум Apache/2.4.54).
+ 8142 запросов: 0 ошибок и 5 элементов, сообщенных удаленным хостом
+ End Time:           [scan_end_time] (30 секунд)
---------------------------------------------------------------------------
+ Протестирован 1 хост

Проверка успешного доступа Nikto к защищенным ресурсам

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

Хорошей практикой при анализе результатов сканирования является сохранение вывода в файл. Вы можете сделать это с помощью опции -o (output). Давайте повторно запустим сканирование и сохраним отчет в текстовый файл с именем nikto_report.txt.

nikto -h http://localhost/protected/ -id labex:P@ssw0rd123 -o nikto_report.txt -Format txt

После завершения сканирования в вашем текущем каталоге (~/project) будет создан файл с именем nikto_report.txt. Вы можете просмотреть этот файл, чтобы проверить результаты. Быстрый способ проверить успех — посмотреть на строку сводки с количеством ошибок.

Используйте команду grep для поиска строки, содержащей "error(s)", в вашем файле отчета:

grep "error(s)" nikto_report.txt

Вывод должен показать 0 error(s), что подтверждает, что Nikto не столкнулся с такими проблемами, как 401 Unauthorized, при выполнении запросов. Это, в сочетании со списком обнаруженных элементов, доказывает, что аутентифицированное сканирование было успешным.

+ 8142 requests: 0 error(s) and 5 item(s) reported on remote host

Итоги

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

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

  • Идентифицировать веб-ресурс, защищенный HTTP Basic Authentication, с помощью curl.
  • Понимать формат учетных данных, необходимых для аутентифицированного сканирования.
  • Использовать опцию -id Nikto для предоставления имени пользователя и пароля.
  • Запускать сканирование защищенного каталога и проверять его успешность путем анализа вывода.

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