The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

Уязвимость в Apache Tomcat, позволяющая подставить JSP-код и получить файлы web-приложений

29.02.2020 21:52

Исследователи из китайской компании Chaitin Tech выявили уязвимость (CVE-2020-1938) в Apache Tomcat, открытой реализации технологий Java Servlet, JavaServer Pages, Java Expression Language и Java WebSocket. Уязвимости присвоено кодовое имя Ghostcat и критический уровень опасности (9.8 CVSS). Проблема позволяет в конфигурации по умолчанию через отправку запроса по сетевому порту 8009 прочитать содержимое любых файлов из каталога web-приложения, в том числе файлов с настройками и исходных текстов приложения.

Уязвимость также даёт возможность импортировать другие файлы в код приложения, что позволяет организовать выполнение кода на сервере, если приложение допускает загрузку файлов на сервер (например, атакующий может загрузить JSP-скрипт под видом картинки через форму загрузки изображения). Атака может быть совершена при возможности отправки запроса на сетевой порт с обработчиком AJP. По предварительным данным, в сети найдено более 1.2 млн хостов, принимающих запросы по протоколу AJP.

Уязвимость присутствует в протоколе AJP, а не вызвана ошибкой в реализации. Помимо приёма соединений по HTTP (порт 8080) в Apache Tomcat по умолчанию допускается обращение к web-приложению через протокол AJP (Apache Jserv Protocol, порт 8009), который представляет собой оптимизированный для достижения более высокой производительности бинарный аналог HTTP, применяемый обычно при создании кластера из Tomcat-серверов или для ускорения взаимодействия с Tomcat на обратном прокси или балансировщике нагрузки.

AJP предоставляет штатную функцию для доступа к файлам на сервере, которую можно использовать в том числе получения файлов, не подлежащих разглашению. Подразумевается, что доступ к AJP открыт только для доверенных серверов, но на деле в конфигурации по умолчанию Tomcat осуществлялся запуск обработчика на всех сетевых интерфейсах, а запросы принимались без аутентификации. Доступ возможен к любым файлам web-приложения, включая содержимое WEB-INF, META-INF и любых других каталогов, отдаваемых через вызов ServletContext.getResourceAsStream(). AJP также позволяет использовать любой файл в доступных для web-приложения каталогах как скрипт JSP.

Проблема проявляется начиная с выпущенной 13 лет назад ветки Tomcat 6.x. Кроме непосредственно Tomcat проблема затрагивает и использующие его продукты, такие как Red Hat JBoss Web Server (JWS), JBoss Enterprise Application Platform (EAP), а также самодостаточные web-приложения, использующие Spring Boot. Аналогичная уязвимость (CVE-2020-1745) присутствует в web-сервере Undertow, применяемом в сервере приложений Wildfly. В JBoss и Wildfly протокол AJP по умолчанию включён только в standalone-full-ha.xml, standalone-ha.xml и ha/full-ha профилях в domain.xml. В Spring Boot поддержка AJP отключена по умолчанию. В настоящее время разными группами подготовлено более десятка рабочих примеров эксплоитов ( 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11).

Уязвимость устранена в выпусках Tomcat 9.0.31, 8.5.51 и 7.0.100 (сопровождение ветки 6.x прекращено). Проследить за появлением обновления в дистрибутивах можно на данных страницах: Debian, Ubuntu, RHEL, Fedora, SUSE, FreeBSD. В качестве обходной меры защиты можно отключить сервис Tomcat AJP Connector (привязать слушающий сокет с localhost или закомментировать строку с Connector port = "8009"), если в нём нет необходимости, или настроить аутентифицированный доступ при помощи атрибутов "secret" и "address", если сервис используется для взаимодействия с другими серверами и прокси на базе mod_jk и mod_proxy_ajp (mod_cluster аутентификацию не поддерживает).

  1. Главная ссылка к новости (https://www.reddit.com/r/bluet...)
  2. OpenNews: Уязвимости в Apache httpd и Apache Tomcat
  3. OpenNews: Опасная уязвимость в Apache Tomcat
  4. OpenNews: Уязвимость в устаревших выпусках Apache Tomcat, которая может привести к выполнению кода на сервере
  5. OpenNews: Зафиксирован самораспространяющийся червь, поражающий серверы Apache Tomcat
  6. OpenNews: Вышел первый стабильный релиз Apache Tomcat 7.0
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/52459-tomcat
Ключевые слова: tomcat, ajp, jsp
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (32) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, Аноним (1), 22:47, 29/02/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • –8 +/
    > AJP

    Хорошую вещь АЖЭПЭ не назовут.

     
  • 1.2, Аноним (2), 22:58, 29/02/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • +3 +/
    >Подразумевается, что доступ к AJP открыт только для доверенных серверов, но на деле в конфигурации по умолчанию Tomcat осуществлялся запуск обработчика на всех сетевых интерфейсах

    Небезопасна конфигурация по-умолчанию бэкдором называется.

     
     
  • 2.3, пох. (?), 23:02, 29/02/2020 [^] [^^] [^^^] [ответить]  
  • +1 +/
    эксперты опеннета...

     
     
  • 3.8, Аноним (2), 23:57, 29/02/2020 [^] [^^] [^^^] [ответить]  
  • +3 +/
    Что не так? Сделать конфигурацию по-умолчанию небезопасной - это гарантированный способ заиметь небезопасные установки при массовом использовании софта. Это очевидно. А потом нагибать.

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

     
     
  • 4.14, лютый жабби (?), 06:58, 01/03/2020 [^] [^^] [^^^] [ответить]  
  • +3 +/
    >Что не так?

    Ты не так.

    Порт 8009 надо ещё на фаеволе открыть, а уже лет так 15 принято "открываем то, что нужно", а не "закрываем то, что ненужно".

    Проверил, госуслуги и наложку - на всех есно эксплоиты не работают. Ну ок, пусть в инете остаются 1.2млн васян страниц проектов, у которых даже админа нет. Там небось в 95% и содержимого нет кроме дефолтной index.jsp.

     
     
  • 5.15, КО (?), 07:50, 01/03/2020 [^] [^^] [^^^] [ответить]  
  • +/
    "Проверил, госуслуги и наложку - на всех есно эксплоиты не работают"
    Эти нет
     
  • 5.18, macfaq (?), 09:44, 01/03/2020 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > Порт 8009 надо ещё на фаеволе открыть, а уже лет так 15 принято "открываем то, что нужно", а не "закрываем то, что ненужно".

    А ты юморист.

     
     
  • 6.27, Аноним (27), 22:46, 01/03/2020 [^] [^^] [^^^] [ответить]  
  • +/
    почему?
    если закрыть все входящие порты кроме 2-3х нужных глупые "уязвимости" вроде этой и memcached открытого всем, тебя не коснутся.
    Даже если случайно не уследишь за чем-то, всё равно соединиться не смогут.
     
  • 5.20, Аноним (2), 11:51, 01/03/2020 [^] [^^] [^^^] [ответить]  
  • –1 +/
    К вам ещё не приехали?
     
  • 2.19, Аноним (19), 10:40, 01/03/2020 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Это обычная уязвимость, примерно 100% дефолтных конфигураций так выглядят. В интернете во всех гайдах тоже всегда предлагают биндить на все интерфейсы, потом имеем что имеем.
     
     
  • 3.25, And (??), 22:05, 01/03/2020 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Да как-то всегда netstat -antpu
     
     
  • 4.26, And (??), 22:06, 01/03/2020 [^] [^^] [^^^] [ответить]  
  • –1 +/
    И тупить на результат до устранения 0.0.0.0 из левого столбца.
     
     
  • 5.28, пох. (?), 07:36, 02/03/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Когда у тебя там кроме 0.0.0.0 только 127.0.0.1 - можешь не тупить.

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

    А настройки - скопипастишь те, что тебе прислал разработчик. Понятия не имея, что они, заодно, включают кластерный сервис вместе с api.

     

  • 1.4, Gemorroj (ok), 23:14, 29/02/2020 Скрыто ботом-модератором [﹢﹢﹢] [ · · · ]     [к модератору]
  • –5 +/
     

  • 1.6, Аноним (6), 23:21, 29/02/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    Разве в SpringBoot ajp не надо включать отдельно?
     
  • 1.7, neAnonim (?), 23:53, 29/02/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • –3 +/
    Выражаю пренебрежение к java и всем завязанным на ней технологиях.
     
     
  • 2.10, Java omnomnom your memory linux (?), 01:21, 01/03/2020 [^] [^^] [^^^] [ответить]  
  • –6 +/
    Есть оперативка, а если ещё осталось? Linux memory model (c)
    проблемы есть у всего, так шо в этом контексте джава норм, а вообще котлин лучше
     
     
  • 3.11, Аноним (11), 01:26, 01/03/2020 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Как будто Kotlin-приложения под Tomcat не уязвимы к данной проблеме.
     
     
  • 4.31, Красноглазик (?), 19:22, 02/03/2020 [^] [^^] [^^^] [ответить]  
  • +/
    здесь этой проблемы нет, котлин в вебе мертв.
     
  • 3.21, Аноним (-), 13:45, 01/03/2020 [^] [^^] [^^^] [ответить]  
  • +/
    > Оперативка есть? А если найду?! (c) java memory model.
     
  • 3.24, Junker (?), 16:45, 01/03/2020 [^] [^^] [^^^] [ответить]  
  • +/
    Оперативка есть?... А если найду? (с)
     
  • 2.30, Красноглазик (?), 18:54, 02/03/2020 [^] [^^] [^^^] [ответить]  
  • +/
    А что не так собственно с java, только хочется нормальной критики, а не вроде *амно много памяти жрет и всё в таком духе.
     
     
  • 3.32, Ээээ (?), 17:04, 03/03/2020 [^] [^^] [^^^] [ответить]  
  • +/
    После 8-ки вразнос пошла. Все эти попытки псевдо-функционалку приколотить гвоздями. Получилось даже хуже, чем с обобщениями.
    А так, вполне норм. Хорошо изучена, хорошо документирована, обширное сообщество (и даже иногда вполне знающие и адекватные представители в нём попадаются).
     

  • 1.9, Аноним (9), 00:10, 01/03/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • –7 +/
    Пофиг, как будто найдётся такой идиот, кто выставит этот порт наружу
     
     
  • 2.12, Аномном (?), 06:32, 01/03/2020 [^] [^^] [^^^] [ответить]  
  • +3 +/
    1.2 млн идиотов
     
     
  • 3.22, Аноним (2), 14:11, 01/03/2020 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Ничтожная доля всех вообще существующих идиотов, имеющих компьютеры.
     
     
  • 4.23, neAnonim (?), 15:24, 01/03/2020 [^] [^^] [^^^] [ответить]  
  • +/
    но существенная среди тех, кто зарабатывает разработкой софта
     
     
  • 5.29, пох. (?), 07:39, 02/03/2020 [^] [^^] [^^^] [ответить]  
  • +/
    они обычно сами томкэтов не ставят, если только на своем локалхосте, где оно как раз вполне безопастно. Ставят задачу девляпсу - "развернуть двадцать томкэтов в amazon cloud".
    И готовый шаблон ему, найденый на stackoveflow где-то рядом с тем кодом, который они якобы-разработали.

    А тот про tomcat вообще знает примерно ничего.

     

  • 1.13, лютый жабби (?), 06:42, 01/03/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • –4 +/
    НОВОСТЬ БЕЗГРАМОТНО СОСТАВЛЕНА.

    В wildfly ajp надо:
    1. руками включить
    2. открыть порт 8009

    на 1.2млн дырявых жаб с васян-проектами или пустой заглушкой, есть 120 млн дырявых пыхов с васян-страничками. кому они нужны?

     
     
  • 2.17, Аноним (17), 08:13, 01/03/2020 [^] [^^] [^^^] [ответить]  
  • +2 +/
    В некоторых профилях он включён по умолчанию: "The AJP connector is enabled by default only in standalone-full-ha.xml, standalone-ha.xml and ha and full-ha profiles in domain.xml."
     

  • 1.16, КО (?), 07:52, 01/03/2020 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    "начиная с выпущенной 13 лет назад"
    Вот на чем шантаж основывают всякие кулхацкеры. Когда их методы палят - ищут другие.
     

     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2024 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру