CVE-2017-12617
Apache Tomcat
2022-03-25
When running Apache Tomcat, it is possible to upload a JSP file to the server via a specially crafted request. This JSP could then be requested and any code it contained would be executed by the server.
Технический анализ и план устранения
Суть уязвимости
Уязвимость (CVE-2017-12617) позволяет злоумышленнику обойти защиту сервера Apache Tomcat и загрузить на него вредоносный JSP-файл. Это возможно при определенной конфигурации (readonly=false для контекста по умолчанию) и использовании специально сформированных HTTP-запросов (например, с добавлением / в конце имени файла: shell.jsp/). После успешной загрузки злоумышленник может обратиться к этому файлу, и код внутри него будет выполнен на сервере с правами пользователя Tomcat, что приведет к полному компрометированию системы.
Как исправить
Основное решение — обновить Apache Tomcat до исправленной версии.
- Для Apache Tomcat 9.x: обновитесь до версии 9.0.1 или новее.
- Для Apache Tomcat 8.5.x: обновитесь до версии 8.5.23 или новее.
- Для Apache Tomcat 8.0.x: обновитесь до версии 8.0.47 или новее.
- Для Apache Tomcat 7.x: обновитесь до версии 7.0.81 или новее.
Пример для Ubuntu/Debian (если Tomcat установлен из репозитория):
sudo apt update
sudo apt install tomcat9
Пример для CentOS/RHEL:
sudo yum update tomcat
Для установки вручную: скачайте исправленную версию с официального сайта https://tomcat.apache.org, остановите службу, замените файлы и перезапустите.
Временное решение
Если немедленное обновление невозможно, примените следующие меры:
-
Установите
readonly=trueдля контекста по умолчанию. Это основная настройка, предотвращающая эксплуатацию. В файлеconf/web.xmlнайдите определение сервлетаdefaultи убедитесь, что параметрreadonlyустановлен вtrue.xml <servlet> <servlet-name>default</servlet-name> <servlet-class>org.apache.catalina.servlets.DefaultServlet</servlet-class> <init-param> <param-name>readonly</param-name> <param-value>true</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet>После изменения перезапустите Tomcat. -
Настройте WAF (Web Application Firewall). Добавьте правило, блокирующее запросы на загрузку (
PUT,POST) файлов с расширением.jspи.jspx(включая варианты с дополнительными слешами или точками в конце имени). -
Ограничьте доступ. Если функционал загрузки файлов через HTTP-методы
PUTне требуется, полностью отключите его на уровне обратного прокси (nginx, Apache HTTPD) или брандмауэра.