Zer0must2b
Green Team
Ghostcat - это уязвимость чтения/включения файлов с высокой степенью риска в Tomcat.
Вступление
В настоящее время Java является самым популярным языком программирования в веб-разработке, а Tomcat является одним из самых популярных серверов промежуточного программного обеспечения Java. Он используется более 20 лет с момента его первоначального выпуска.
Ghostcat - серьезная уязвимость в Tomcat, обнаруженная исследователем безопасности Chaitin Tech. Из-за недостатка протокола Tomcat AJP злоумышленник может читать или включать любые файлы в каталоги веб-приложений Tomcat. Например, злоумышленник может прочитать файлы конфигурации веб-приложения или исходный код. Кроме того, если целевое веб-приложение имеет функцию загрузки файлов, злоумышленник может выполнить вредоносный код на целевом хосте, воспользовавшись включением файлов через уязвимость Ghostcat.
Вопросы и ответы
Почему эта уязвимость называется Ghostcat?
Эта уязвимость затрагивает все версии Tomcat стандартной конфигурации (когда мы обнаружили эту уязвимость, было подтверждено, что она затрагивает все версии Tomcat 9/8/7/6, а более ранние версии, которые были слишком старыми, не были проверены), что означает что в Tomcat она существовала более десяти лет.
Что такое Tomcat AJP Connector?
Tomcat Connector - это канал для подключения Tomcat к внешним устройствам. Это позволяет Catalina получать запросы извне, передавать их в соответствующее веб-приложение для обработки и возвращать результат ответа на запрос.
По умолчанию Tomcat настроен с двумя коннекторами, такими как HTTP-коннектор и AJP-коннектор:
Код:
HTTP Connector: используется для обработки запросов протокола HTTP (HTTP / 1.1), а адрес прослушивания по умолчанию - 0.0.0.0:8080.
Код:
Connector AJP: используется для обработки запросов протокола AJP (AJP / 1.3), а адрес прослушивания по умолчанию - 0.0.0.0:8009.
HTTP Connector используется для предоставления веб-сервисов HTTP, которые мы часто используем. Коннектор AJP использует протокол AJP (Apache Jserv Protocol). Протокол AJP можно понимать как оптимизированную по производительности версию протокола HTTP в двоичном формате. Это может снизить затраты на обработку HTTP-запросов, поэтому в основном используется в сценариях, где требуется кластеризация или обратный прокси-сервер.
Возможности Ghostcat
Используя уязвимость Ghostcat, злоумышленник может прочитать содержимое файлов конфигурации и файлов исходного кода всех веб-приложений, развернутых на Tomcat.
Кроме того, если приложение веб-сайта позволяет пользователям загружать файл, злоумышленник может сначала загрузить файл, содержащий вредоносный код сценария JSP, на сервер (сам загруженный файл может быть файлом любого типа, например изображениями, текстовыми файлами и т.д.), а затем включить загруженный файл, воспользовавшись уязвимостью Ghostcat, которая в конечном итоге может привести к удаленному выполнению кода.
Какие версии Tomcat подвержены уязвимости?
Apache Tomcat 9.x <9.0.31
Apache Tomcat 8.x <8.5.51
Apache Tomcat 7.x <7.0.100
Apache Tomcat 6.x
При каких обстоятельствах Tomcat подвержен риску?
Если AJP-коннектор включен и злоумышленник может получить доступ к сервисному порту AJP-коннектора, существует риск использования уязвимости Ghostcat.
Следует отметить, что Tomcat AJP Connector включен по умолчанию и слушает 0.0.0.0:8009.
Как я могу это исправить?
Apache Tomcat официально выпустил версии 9.0.31, 8.5.51 и 7.0.100 для исправления этой уязвимости.
Чтобы правильно исправить эту уязвимость, сначала необходимо определить, используется ли служба Tomcat AJP Connector в вашей серверной среде:
- Если кластер или обратный прокси-сервер не используется, вы можете определить, что AJP не используется.
- В противном случае вам необходимо выяснить, взаимодействует ли кластерный или обратный сервер со службой Tomcat AJP Connector.
1. Если служба AJP Connector не используется:
Если служба AJP Connector не используется, вы можете напрямую обновить Tomcat до версии 9.0.31, 8.5.51 или 7.0.100 для исправления уязвимости.
Если вы не можете выполнить обновление, вы можете отключить AJP-коннектор напрямую или изменить адрес прослушивания на localhost.
шаги:
(1) Отредактируйте <CATALINA_BASE> /conf/server.xml, и найдите следующую строку (<CATALINA_BASE> - это рабочий каталог Tomcat):
<Connector port = "8009" protocol = "AJP / 1.3" redirectPort = "8443" />
(2) Закомментируйте (или просто удалите):
<! - <Connector port = "8009" protocol = "AJP / 1.3" redirectPort = "8443" /> ->
(3) Сохраните изменения и перезапустите Tomcat.
В дополнение к вышеуказанным мерам, вы также можете использовать брандмауэры, чтобы предотвратить доступ ненадежных источников к сервисному порту Tomcat AJP Connector.
2. Если служба AJP Connector используется:
Если используется служба AJP Connector, мы рекомендуем обновить Tomcat до версии 9.0.31, 8.5.51 или 7.0.100, а затем настроить атрибут «secret» для AJP Connector, чтобы установить учетные данные для аутентификации протокола AJP. Например:
Код:
<Connector port = "8009" protocol = "AJP / 1.3" redirectPort = "8443" address = "YOUR_TOMCAT_IP_ADDRESS" secret = "YOUR_TOMCAT_AJP_SECRET" />
Если вы не можете выполнить обновление, вы можете настроить атрибут «requiredSecret» для Соединителя AJP, чтобы установить учетные данные для аутентификации протокола AJP. Например:
Код:
<Connector port = "8009" protocol = "AJP / 1.3" redirectPort = "8443" address = "YOUR_TOMCAT_IP_ADDRESS" requiredSecret = "YOUR_TOMCAT_AJP_SECRET" />
(Обратите внимание, что вы должны изменить вышеуказанное «YOUR_TOMCAT_AJP_SECRET» на более безопасное значение, которое нельзя легко угадать или взломать.)
Инструмент xray от Chaitin Tech для обнаружения уязвимости Ghostcat:chaitin/xray
PoC: [ 1 , 2 , 3 , 4 , 5 ]
Оригинал:
Ссылка скрыта от гостей