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

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

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

Введение

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

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


Skills Graph

Установка Nikto

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

Перед началом убедимся, что находимся в правильной директории. Директория ~/project - это место, где мы будем выполнять все лабораторные работы, чтобы файлы были организованы:

cd ~/project

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

sudo apt update

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

sudo apt install -y nikto

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

nikto -Version

Вы должны увидеть вывод, похожий на следующий:

Nikto v2.1.6

Nikto теперь успешно установлен на вашей системе. Хотя у Nikto есть файл конфигурации по пути /etc/nikto.conf, мы будем использовать настройки по умолчанию для этого вводного лабораторного занятия. Эти настройки по умолчанию обеспечивают хороший баланс между thorough scanning (постепенным сканированием) и разумной скоростью для учебных целей.

Выбор целевого сервера

На этом этапе вы узнаете, как выбрать и проверить целевой веб-сервер для сканирования на уязвимости. Мы будем использовать Nikto для сканирования специально уязвимого веб-приложения под названием "bWAPP" (Buggy Web Application), которое безопасно установлено в нашей среде LabEx. Это учебное приложение разработано для проведения тестов на безопасность без влияния на реальные системы.

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

    cd ~/project
  2. Перед сканированием необходимо убедиться, что наш целевой веб-сервер работает корректно. Мы будем использовать curl с флагом -I для получения только HTTP-заголовков:

    curl -I http://localhost:8000

    Успешный ответ будет содержать HTTP-статус код 200 OK, что означает, что сервер активен:

    HTTP/1.1 200 OK
  3. Теперь мы зададим нашу целевую URL-адрес как переменную окружения. Это упростит ссылку на нее при дальнейшем сканировании:

    TARGET="http://localhost:8000"
  4. Проведем быстрый тест, чтобы увидеть ответ веб-сервера. Мы используем curl для получения содержимого страницы и отобразим только первые 5 строк:

    curl $TARGET | head -n 5

    Это даст нам пример HTML-содержимого, подтверждая, что мы можем успешно подключиться к серверу.

  5. Помните этот целевой URL-адрес, так как мы будем использовать его на протяжении всего процесса сканирования. Отслеживание цели является важным аспектом при проведении оценок безопасности.

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

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

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

  1. Сначала убедитесь, что вы находитесь в правильной рабочей директории:

    cd ~/project

Теперь мы запустим базовое сканирование. Флаг -h указывает целевой хост (в данном случае - наш локальный тестовый сервер). Nikto автоматически проверит на наличие распространенных уязвимостей, таких как:

  • Стандартные файлы и программы
  • Небезопасные настройки сервера
  • Устаревшее программное обеспечение сервера
  • Потенциальные уязвимости к XSS и SQL-инъекциям
  1. Запустите базовое сканирование Nikto на нашем целевом сервере (http://localhost:8000):

    nikto -h http://localhost:8000
  2. Сканирование запустится и отобразит результаты в режиме реального времени. Вы увидите вывод, похожий на следующий:

    - Nikto v2.1.6
    - Target IP:          127.0.0.1
    - Target Hostname:    localhost
    - Target Port:        8000
    - Start Time:         [timestamp]

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

  1. Для более комплексного сканирования вы можете добавить следующие параметры:

    nikto -h http://localhost:8000 -Tuning x 6

    Это выполнит расширенные тесты (x) и проверит наличие общих файлов (6).

  2. Сканирование может занять от 1 до 2 минут. По завершении вы увидите сводку обнаруженных проблем, включая:

    + Server may be vulnerable to XSS
    + Retrieved x-powered-by header: PHP/7.4.3
    + OSVDB-3092: Possible sensitive directory

Каждое обнаруженное нарушение включает:

  • Описание уязвимости
  • Тип уязвимости
  • Соответствующие ссылки (например, идентификаторы OSVDB)
  • Поврежденный компонент
  1. Обратите внимание, что некоторые обнаруженные проблемы могут быть ложными срабатываниями - мы проанализируем их на следующем этапе. Не все сообщения об ошибках являются реальными уязвимостями, поэтому ручная проверка является важной частью тестирования безопасности.

Проверка результатов сканирования

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

  1. Сначала убедитесь, что вы находитесь в правильной рабочей директории, где хранятся результаты сканирования:

    cd ~/project

    Эта команда изменяет текущую директорию на ту, где Nikto сохранил файл с результатами.

  2. Разберем основные разделы, которые вы увидите в файле с результатами сканирования Nikto:

    • Информация о сервере: Показывает, какое программное обеспечение веб-сервера запущено (например, Apache или Nginx) и его версию.
    • Обнаруженные уязвимости: Отображает конкретные проблемы безопасности, обнаруженные Nikto, с указанием степени серьезности каждой проблемы.
    • Сводка сканирования: Дает общие данные о том, что было обнаружено в ходе сканирования.
  3. Чтобы быстро найти наиболее важные уязвимости, выполните следующую команду:

    grep -E '\+|OSVDB' ~/project/nikto_scan.txt

    Эта команда ищет в результатах сканирования и показывает только строки, содержащие маркеры уязвимостей (+) или ссылки на OSVDB (идентификаторы базы данных уязвимостей).

  4. При проверке результатов уделите особое внимание следующим аспектам:

    • Любым обнаруженным проблемам, помеченным как "ВЫСОКОЙ" степени риска - это самые опасные проблемы.
    • Старым версиям программного обеспечения сервера - устаревшие программы часто имеют известные уязвимости безопасности.
    • Открытым каталогам или конфиденциальным файлам - они не должны быть доступны публично.
    • Общим веб-атакам, таким как межсайтовый скриптинг (Cross-Site Scripting, XSS) или SQL-инъекция (SQL Injection, SQLi).
  5. Вот как могут выглядеть типичные обнаруженные проблемы:

    + /config.php: PHP config file found
    + OSVDB-3092: /admin/: This might be interesting

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

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

    curl -s "https://vulners.com/api/v3/search/id/?id=OSVDB-3092" | jq '.data.attributes'

    Эта команда извлекает подробную информацию о уязвимости OSVDB-3092 из онлайн-библиотеки и форматирует ее для удобного чтения.

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

Сохранение отчета

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

  1. Сначала убедитесь, что вы находитесь в правильной рабочей директории, где вы хотите сохранить отчеты о сканировании. Команда cd позволяет изменить директорию:

    cd ~/project
  2. Чтобы сохранить результаты сканирования предыдущего этапа в обычном текстовом формате, выполните следующую команду. Флаг -output указывает имя файла, в который Nikto запишет результаты:

    nikto -h http://localhost:8000 -output vuln_scan_report.txt
  3. Убедитесь, что отчет был успешно создан. Команда ls -l выводит список файлов с подробной информацией, и вы должны увидеть файл отчета с содержимым (не нулевым размером):

    ls -l vuln_scan_report.txt
  4. Для лучшей читаемости и удобства обмена отчетом с членами команды вы можете сгенерировать отчет в формате HTML. Опция -Format html создает визуально структурированный отчет:

    nikto -h http://localhost:8000 -Format html -output vuln_scan_report.html
  5. Чтобы быстро проверить содержимое текстового отчета, используйте команду head, которая выводит первые 20 строк. Это поможет убедиться, что сканирование было выполнено корректно:

    head -n 20 vuln_scan_report.txt
  6. Отчет содержит несколько важных разделов, которые анализируют профессионалы в области безопасности:

    • Метаданные сканирования (дата, цель и т.д.) - показывают, когда и что было просканировано
    • Все обнаруженные уязвимости - основные результаты, требующие внимания
    • Рекомендации по устранению - предлагаемые решения для каждой проблемы
    • Статистика сканирования и время завершения - помогает оценить производительность сканирования
  7. Эти файлы отчетов теперь сохранены в директории ~/project. Вы можете:

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

Резюме

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

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