
МИНИСТЕРСТВО ЦИФРОВОГО РАЗВИТИЯ СВЯЗИ И МАССОВЫХ КОММУНИКАЦИЙ
Ордена Трудового Красного Знамени
Федеральное государственное бюджетное образовательное учреждение высшего образования
«Московский технический университет связи и информатики»
__________________________________________________________________
Кафедра «Информационная безопасность»
Отчёт по лабораторной работе №6
по дисциплине «Методы и средства защиты информации в компьютерных сетях»
Выполнили: студенты гр. БСТ2104
Алексеев Даниил Петрович
Кофанов Дмитрий Алексеевич
Мироносцев Григорий Константинович
Первухина Алиса Александровна
Проверили:
асс. Рыбаков Сергей Юрьевич
асс. Раковский Дмитрий Игоревич
Москва
2024
Задание
Выбрать web-ресурс для тестирования. Web-ресурс должен принадлежать Вам, либо Вы должны получить письменное подтверждение от владельца web-ресурса на проведение тестирования на проникновение.
В случае анализа стороннего web-ресурса привести:
Письменное согласие от владельца web-ресурса на проведение тестирования на проникновение.
Скриншот главный страницы web-ресурса и URL, по которому будет проводиться тестирование.
Скачать и установить ZAP: https://www.zaproxy.org/download/.
Сделать скриншот главного экрана программы.
Кратко описать функционал программы.
Провести анализ выбранного web-ресурса для тестирования.
Сделать скриншот работы ZAP.
Получить список обнаруженных web-уязвимостей. Привести и заполнить в отчете таблицу по шаблону из табл. 6.1.
Таблица 6.1 – Шаблон списка обнаруженных web-уязвимостей
№ уязвимости |
Уровень опасности |
Название уязвимости |
Описание уязвимости |
Способ (способы) устранения выявленной уязвимости |
1 |
… |
… |
… |
… |
… |
… |
… |
… |
… |
Сделать выводы на основании полученной информации.
Содержание
Цель работы 4
Теоретическая часть 4
Ход выполнения работы 5
Вывод 15
Цель работы
Целью работы является приобретение навыков поиска уязвимостей в web-ресурсах путём выявления структуры ресурса, сканирования на уязвимости и выявления ошибок в логике работы.
Теоретическая часть
Процесс выявления web-уязвимостей является комплексным мероприятием. Конкурентным преимуществом программы ZAP перед аналогами является:
открытый программный код;
открытая лицензия;
перевод на русский язык;
возможность обнаружения ряда типовых уязвимостей «из коробки».
Программа ZAP формирует не только перечень обнаруженных уязвимостей, но и типовые рекомендации по их устранению.
Ход выполнения работы
Результаты выполнения работы представлены на рисунках 1-5:
Рисунок 1 – Выбор web-ресурса для тестирования (https://mishchukov.ru)
Рисунок 2 – Контакты владельца web-ресурса
Рисунок 3 – Согласие от владельца web-ресурса на проведение тестирования на проникновение
Рисунок 4 – Главный экран программы ZAP
OWASP Zed Attack Proxy (ZAP) — это простой в использовании интегрированный инструмент тестирования на проникновения и нахождения уязвимостей в web-приложениях.
Некоторые из функций ZAP:
1) Перехват прокси – ZAP выступает в роли промежуточного прокси-сервера между клиентом (например, браузером) и сервером. Это позволяет перехватывать, анализировать и модифицировать HTTP/HTTPS-запросы и ответы. Полезно для выявления уязвимостей, таких как недостаточно защищённые данные или скрытые параметры.
2) Традиционный и AJAX пауки:
Традиционный паук сканирует web-сайт, переходя по ссылкам и идентифицируя страницы для анализа. Это стандартный инструмент для построения карты сайта.
AJAX-паук фокусируется на динамическом содержимом, которое загружается через JavaScript. Это важно для тестирования современных web-приложений.
3) Автоматизированный сканер – позволяет быстро выполнить базовый аудит безопасности web-приложения. Ищет общие уязвимости, такие как XSS, SQL-инъекции, небезопасные заголовки и многое другое.
4) Пассивный сканер – анализирует трафик, проходящий через прокси, без отправки дополнительных запросов. Это безопасный способ идентификации возможных проблем без риска нарушения работы приложения.
5) Принудительный просмотр – пытается получить доступ к скрытым файлам и папкам на сервере, которые могут быть неправильно защищены (например, /admin, /backup.zip). Использует словари и наборы URL для поиска таких ресурсов.
6) Фаззер – позволяет автоматизированно тестировать входные данные с помощью большого количества различных значений (например, для поиска уязвимостей валидации или переполнения буфера). Фаззинг помогает выявить непредвиденные поведения приложения.
7) Динамические SSL-сертификаты – ZAP может генерировать собственные динамические SSL-сертификаты, что позволяет работать с HTTPS-трафиком. Это полезно для анализа зашифрованных данных.
8) Поддержка смарт-карт и клиентских цифровых сертификатов – ZAP поддерживает аутентификацию с использованием смарт-карт или клиентских сертификатов, что особенно важно для тестирования защищённых корпоративных систем.
9) Поддержка web-сокетов – включает инструменты для захвата и анализа трафика WebSocket. Это важно для современных приложений, которые используют WebSocket для двусторонней связи в реальном времени.
10) Поддержка аутентификации и сессий – ZAP поддерживает различные механизмы аутентификации (например, Basic Auth, OAuth, JWT). Также он может управлять сессиями для проверки защиты от взлома через управление сессиями.
11) Мощный REST API – ZAP предоставляет API для автоматизации тестирования, интеграции с CI/CD системами или управления ZAP удалённо.
12) Поддержка большого количества скриптовых языков – ZAP поддерживает создание и использование пользовательских скриптов на популярных языках, таких как JavaScript, Python, Ruby, Groovy и др. Это позволяет адаптировать его функциональность под конкретные задачи.
13) Опция автоматического обновления – регулярные обновления обеспечивают, что ZAP всегда использует актуальные базы данных уязвимостей и расширений.
14) Интегрированные дополнения и маркет обновлений – ZAP имеет обширную экосистему дополнений, доступных в маркетплейсе, которые расширяют его функциональность. Это включает поддержку новых технологий, отчёты, сканеры и многое другое.
Рисунок 5 – Анализ выбранного web-ресурса для тестирования
Список обнаруженных web-уязвимостей представлен в таблице.
Таблица – Список обнаруженных web-уязвимостей
№ уязвимости |
Уровень опасности |
Название уязвимости |
Описание уязвимости |
Способ (способы) устранения выявленной уязвимости |
1 |
Medium |
Заголовок Content Security Policy (CSP) не задан |
Политика безопасности содержимого (CSP) — это дополнительный уровень безопасности, который помогает обнаруживать и смягчать определенные типы атак, включая межсайтовые сценарии (XSS) и атаки с внедрением данных. Эти атаки используются для всего: от кражи данных до порчи сайта или распространения вредоносных программ. CSP предоставляет набор стандартных HTTP-заголовков, которые позволяют владельцам web-сайтов объявлять утвержденные источники контента, которые браузеры должны разрешить загружать на эту страницу. Охватываемые типы включают JavaScript, CSS, HTML-фреймы, шрифты, изображения и встраиваемые объекты, такие как апплеты Java. ActiveX, аудио и видео файлы. |
Убедитесь, что ваш web-сервер, сервер приложений, балансировщик нагрузки и т. д. настроены для установки заголовка Content-Security-Policy. |
2 |
Medium |
Отсутствует заголовок (Header) для защиты от кликджекинга |
Ответ не включает Content-Security-Policy с директивой «frame-ancestors» или X-Frame-Options для защиты от атак «ClickJacking». |
Современные web-браузеры поддерживают Content-Security-Policy и заголовки HTTP X-Frame-Options. Убедитесь, что один из них установлен на всех web-страницах, возвращаемых вашим сайтом/приложением. Если вы ожидаете, что страница будет обрамлена только страницами на вашем сервере (например, это часть FRAMESET), вам следует использовать SAMEORIGIN, в противном случае, если вы никогда не ожидаете, что страница будет обрамлена, вам следует использовать DENY. В качестве альтернативы рассмотрите возможность реализации директивы Content Security Policy «frame-ancestors». |
3 |
Low |
Включение исходного файла междоменного JavaScript |
На странице есть один или несколько файлов сценариев из стороннего домена. |
Убедитесь, что исходные файлы JavaScript загружаются только из надежных источников, и источники не могут контролироваться конечными пользователями приложения. |
4 |
Low |
Заголовок Strict-Transport-Security не установлен |
HTTP Strict Transport Security (HSTS) - это механизм политики web-безопасности, посредством которого web-сервер объявляет, что соответствующие пользовательские агенты (например, web-браузер) должны взаимодействовать с ним, используя только безопасные соединения HTTPS (т. е. HTTP на уровне TLS / SSL). HSTS - это протокол отслеживания стандартов IETF, указанный в RFC 6797. |
Убедитесь, что ваш web-сервер, сервер приложений, балансировщик нагрузки и т. д. настроены для принудительного применения Strict-Transport-Security. |
5 |
Low |
Заголовок X-Content-Type-Options отсутствует |
Для заголовка Anti-MIME-Sniffing X-Content-Type-Options не задано значение «nosniff». Это позволяет более старым версиям Internet Explorer и Chrome выполнять MIME-сниффинг тела ответа, что может привести к интерпретации и отображению тела ответа как тип контента, отличный от объявленного типа контента. Текущая (начало 2014 г.) и устаревшая версии Firefox будут использовать объявленный тип содержимого (если он установлен), а не выполнять сниффинг MIME. |
Убедитесь, что приложение / web-сервер правильно задает заголовок Content-Type и что он устанавливает заголовок X-Content-Type-Options равным «nosniff» для всех web-страниц. Если возможно, убедитесь, что конечный пользователь использует современный web-браузер, соответствующий стандартам, который вообще не выполняет сниффинг MIME или который может быть направлен web-приложением / web-сервером, чтобы не выполнять сниффинг MIME. |
6 |
Low |
Утечка информации о версии через поле заголовка HTTP-ответа «Server» |
Web-сервер / сервер приложений передает информацию о версии через HTTP-заголовок ответа «Server». Доступ к такой информации может облегчить злоумышленникам определение других уязвимостей, которым подвержен ваш web-сервер / сервер приложений. |
Убедитесь, что ваш web-сервер, сервер приложений, балансировщик нагрузки и т. д. настроены на подавление заголовка «Server» или предоставление общих сведений. |
7 |
Informational |
Директивы управления кэшем |
Заголовок управления кэшем установлен неправильно или отсутствует, что позволяет браузеру и прокси-серверам кэшировать содержимое. Это может быть предназначено для статических ресурсов, таких как css, js или файлы изображений, однако ресурсы должны быть проверены, чтобы гарантировать, что конфиденциальный контент не будет кэширован. |
Для защищенного содержимого убедитесь, что для HTTP-заголовка управления кэшем задано значение «без кэша, без сохранения, с обязательной повторной проверкой». Если актив должен быть кэширован, рассмотрите возможность установки директив «public, max-age, immutable». |
8 |
Informational |
Пользовательский Агент Fuzzer |
Проверьте различия в ответах на основе нечеткого пользовательского агента (например, мобильные сайты, доступ в качестве поискового робота). Сравните код состояния ответа и хэш-код тела ответа с исходным ответом. |
Это информационное предупреждение, поэтому никаких изменений не требуется. |
9 |
Informational |
Современное web-приложение |
Были обнаружены ссылки, не имеющие традиционных атрибутов href, что указывает на то, что это современное web-приложение. |
Это информационное предупреждение, поэтому никаких изменений не требуется. |
Тестирование с использованием OWASP ZAP выявило несколько важных уязвимостей, большинство из которых связано с отсутствием ключевых заголовков безопасности в HTTP-ответах. Эти уязвимости представляют средний и низкий уровень опасности, однако, их устранение критически важно для предотвращения эксплуатации приложения злоумышленниками.
Основные наблюдения:
Приложение не имеет надлежащих мер защиты от распространённых атак, таких как межсайтовый скриптинг (XSS), кликджекинг и перехват данных.
Конфигурация сервера не учитывает современные стандарты web-безопасности, такие как HTTP Strict Transport Security и Content Security Policy.
Имеются упущения в настройках защиты кэша и скрытии чувствительной информации о сервере, которые могут облегчить злоумышленникам дальнейшую разведку.
Современная структура web-приложения (динамическая загрузка ресурсов, отсутствие традиционных атрибутов ссылок) предполагает использование передовых технологий, что требует дополнительных мер безопасности для защиты от сложных атак.
Устранение обнаруженных проблем не только повысит безопасность, но и обеспечит соответствие приложения лучшим практикам в области web-безопасности. Настройка заголовков безопасности, управление кэшем и контроль за сторонними ресурсами значительно сократят риски и обеспечат надёжную защиту от большинства типичных атак и уязвимостей.
Вывод
В ходе выполнения лабораторной работы было проведено тестирование на проникновение web-ресурса.
Таким образом, в результате были получены практические навыки по работе с ПО ZAP для поиска уязвимостей в web-ресурсах путём выявления структуры ресурса, сканирования на уязвимости и выявления ошибок в логике работы.