
Разбор уязвимости CVE-2020-1938 (Ghostcat) Apache Tomcat

Apache Tomcat — это популярный открытый сервер приложений и контейнер для сервлетов, который реализует спецификации Java Servlet и JavaServer Pages (JSP). Он является частью проекта Apache Software Foundation и используется для развертывания и выполнения Java-веб-приложений. Tomcat предназначен для обработки запросов HTTP и представляет собой сервер, который работает на платформе Java.
Это мощный инструмент для разработчиков Java-приложений, который предоставляет все необходимое для создания, развертывания и управления веб-приложениями. Если ваше приложение написано на Java и использует сервлеты или JSP, то Tomcat может стать отличным выбором для развертывания вашего приложения в продакшн-среде.
Apache Tomcat используется для развертывания и управления веб-приложениями на платформе Java. В реальных проектах Tomcat применяется для различных задач. Например, его часто используют для разработки веб-приложений, основанных на технологиях Java Servlet и JSP. В таких случаях Tomcat выполняет роль сервера приложений, который обрабатывает запросы от пользователей, управляет сессиями и генерирует динамические веб-страницы.
Еще одно распространенное применение — это тестирование и локальное развертывание приложений. Разработчики часто используют Tomcat на своих рабочих станциях для проверки работы веб-приложений перед тем, как развернуть их в продакшн-среде. Этот процесс помогает убедиться, что приложение работает корректно, и устранять ошибки в процессе разработки.
Tomcat также используется в связке с другими веб-серверами, такими как Apache HTTP Server. В этом случае Apache HTTP Server может обрабатывать статические файлы (изображения, CSS, JavaScript), а Tomcat — динамическую часть веб-приложения, используя Java-сервлеты для обработки запросов пользователей.
Кроме того, Tomcat активно используется для создания и развертывания корпоративных приложений, которые требуют обработки больших объемов данных и взаимодействия с базами данных. Его можно настроить для обеспечения высокой доступности и отказоустойчивости через кластеризацию, что важно для приложений, работающих в режиме 24/7.
Суть уязвимости
CVE-2020-1938 — это уязвимость чтения/включения файлов в соединителе AJP в Apache Tomcat. Она включена с портом конфигурации по умолчанию 8009. Удаленный злоумышленник, не прошедший аутентификацию, может воспользоваться этой уязвимостью для чтения файлов веб-приложения с уязвимого сервера.
В современных Tomcat используется AJP 1.3 (AJP13). Поскольку это двоичный протокол, браузер напрямую не может отправлять запросы AJP13. Поэтому в качестве фронтенда выступает любой популярный веб-сервер — Nginx, Apache, IIS.
Уязвимость Ghostcat опасна тем, что злоумышленник может просмотреть конфигурационные файлы, не проходя при этом авторизацию, что приведёт к раскрытию конфиденциальной информации (логины и пароли к БД, токены и настройки сервисов).
Учитывая то, что данная уязвимость исправлена только в версиях 9.0.31, 8.5.51, 7.0.100 Apache Tomcat, вероятнее всего во всех других версиях такой недочёт будет валиден и сработает.
Уязвимые версии по официальным данным:
Порядок действий
Сканируем цель на наличие порта по умолчанию с сервисом AJP:
Клонируем репозиторий Github с необходимым инструментом:
git clonehttps://github.com/Hancheng-Lei/Hacking-Vulnerability-CVE-2020-1938-Ghostcat.git
cd Hacking-Vulnerability-CVE-2020-1938-Ghostcat
Запуск эксплойта:
python2 192.168.0.106 -p 8009 -f WEB-INF/web.xml
-p: укажите порт
-f: укажите расположение файла для чтения
Вместо адреса на примере вставьте своей тестируемой цели.
Примечание:
Помимо WEB-INF/web.xml можно поэкспериментировать ещё со следующими путями с хранящимися критичными данными:
META-INF/context.xml - Учетные данные для подключения к базе данных
WEB-INF/web.xml - Настройки безопасности, ограничения доступа, роли пользователей и конфигурации
conf/server.xml - Настройки SSL, пути к хранилищам ключей и пароли для доступа к ним. Также может содержать информацию о подключениях к другим сервисам.
conf/catalina.properties - Пути к важным библиотекам
WEB-INF/log4j.properties - Настройки для логирования, включая пути к файлам логов
Рекомендации по защите
· Обновить версию Apache Tomcat до актуальной
· Атрибут requiredSecret необходимо настроить для установки учётных данных для аутентификации по протоколу AJP следующим образом:
· Отредактируйте
Закомментируйте (или просто удалите):
->
Сохраните изменения и перезапустите Tomcat.
Вывод
Ghostcat — это серьезная уязвимость, которая подчеркивает важность правильной конфигурации сервера Tomcat и мониторинга его работы. Несвоевременное реагирование на уязвимости и несоответствующая настройка безопасности могут привести к серьезным последствиям, таким как утечка конфиденциальных данных. Регулярные обновления и проверка безопасности серверов помогут минимизировать риски.
Крайне важно следовать рекомендациям специалистов, чтобы сохранить инфраструктуру компании в безопасности.