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

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

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

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

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

Категории

Все категории
Loading categories
spring4shell-local-verification-lab — Spring Framework CVE-2022-22965 — проверка условий локального воздействия, исправление обновлением версии и повторное тестирование | Kitploit
Инструменты/GitHubGitHub/meng-security/spring4shell-local-verification-lab
Анализ уязвимостейАнализ КодаЭксплуатацияВеб-безопасностьОбучение и ОбразованиеЛаборатории и Практика
GitHubmeng-security/spring4shell-local-verification-lab

spring4shell-local-verification-lab

Spring Framework CVE-2022-22965 — проверка условий локального воздействия, исправление обновлением версии и повторное тестирование

Репозиторий
82 месяцев назадЕщё не проверено

Популярное

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

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

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

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

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

Проект локальной проверки условий эксплуатации, устранения и повторного тестирования Spring4Shell

О проекте

Данный проект предназначен для изучения и проверки условий влияния, рисков, методов устранения и процесса повторного тестирования после устранения уязвимости CVE-2022-22965 в Spring Framework, также известной как Spring4Shell.

Проект выполнен в локальной авторизованной среде, развёрнутой лично. Основное внимание уделяется не атаке на реальные цели, а поэтапному подтверждению условий, связанных с уязвимостью, путём развёртывания тестовой среды Spring MVC до и после устранения уязвимости, а также безопасному и контролируемому наблюдению в режиме только для чтения за различиями во внутренних путях свойств механизма привязки данных Spring до и после обновления версии.

В рамках проекта выполнены следующие этапы:

  • Подготовка окружения JDK, Maven и Apache Tomcat
  • Развёртывание WAR-проекта Spring MVC
  • Базовое тестирование штатной функциональности
  • Подтверждение условий влияния уязвимости
  • Диагностика внутренних путей свойств в режиме только для чтения
  • Анализ причин возникновения уязвимости
  • Обновление версии Spring Framework
  • Повторное тестирование безопасности после устранения
  • Повторное тестирование штатной функциональности после устранения
  • Подготовка отчёта о тестировании и скриншотов-доказательств

Заявление о безопасности

Данный проект предназначен исключительно для личной локальной среды или явно авторизованной среды тестирования безопасности.

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

В ходе тестирования не выполнялись следующие действия:

  • Не записывался WebShell
  • Не выполнялись системные команды
  • Не изменялась конфигурация Tomcat
  • Не создавалась обратная оболочка (reverse shell)
  • Не проводился контроль с сохранением доступа (persistence)
  • Не оказывалось воздействия на какие-либо внешние системы

Запрещается использовать методы тестирования из данного проекта против любых неавторизованных целей.

Предыстория уязвимости

CVE-2022-22965, обычно называемая Spring4Shell, — это уязвимость удалённого выполнения кода в Spring Framework, связанная с механизмом привязки данных параметров запроса.

Spring MVC поддерживает автоматическую привязку параметров HTTP-запроса к свойствам Java-объектов. Например, в данном проекте параметры имени и электронной почты принимаются следующим образом:

@ModelAttribute("profile") UserProfile profile

В обычных условиях параметры запроса name и email привязываются к объекту UserProfile в соответствии с именами свойств.

В затронутых версиях ограничения доступа к некоторым внутренним путям свойств недостаточно строгие. При использовании JDK 9 или более поздней версии, а также при выполнении определённых условий, связанных с Servlet-контейнером, способом развёртывания и привязкой данных, внешние параметры запроса могут продолжить доступ от обычного бизнес-объекта к внутренним объектам, связанным с Java Class, модулями, загрузчиками классов или контейнером.

В определённых эксплуатируемых средах злоумышленник может дополнительно изменить конфигурацию сервера или записать файлы на сервер, что создаёт риск удалённого выполнения кода.

Данный проект не выполняет полную эксплуатацию удалённого кода, а использует следующий путь свойства для безопасной диагностики различий в режиме только для чтения:

class.module.name

Цели проекта

  1. Понять базовый процесс привязки данных параметров запроса в Spring MVC.
  2. Развернуть локальный тестовый WAR-проект Spring MVC.
  3. Выполнить базовое тестирование штатной бизнес-функциональности.
  4. Подтвердить условия влияния, такие как Spring Framework, JDK, Tomcat, развёртывание WAR и точка входа привязки данных.
  5. Наблюдать поведение доступа к внутренним путям свойств в режиме только для чтения.
  6. Проанализировать основные причины возникновения уязвимости.
  7. Обновить Spring Framework до исправленной версии.
  8. Провести повторное тестирование теми же методами после устранения.
  9. Подтвердить, что обновление версии не повлияло на штатную бизнес-функциональность.
  10. Подготовить исходный код проекта, отчёт о тестировании и скриншоты-доказательства.

Экспериментальная среда

Проект выполнен в личной изолированной экспериментальной среде VMware.

  • Хост-система: Windows 11
  • Целевая машина: виртуальная машина Windows 10
  • ПО виртуализации: VMware Workstation
  • Среда Java: Eclipse Temurin JDK 11.0.31
  • Инструмент сборки проекта: Apache Maven 3.9.16
  • Servlet-контейнер: Apache Tomcat 9.0.60
  • Версия Spring Framework до устранения: 5.3.17
  • Версия Spring Framework после устранения: 5.3.18
  • Веб-фреймворк: Spring MVC
  • Способ развёртывания проекта: классическое развёртывание WAR-пакета
  • Адрес тестирования: 127.0.0.1

Тестовые данные штатной функциональности:

  • Имя: Alice
  • Электронная почта: [email protected]

Путь свойства для диагностики безопасности:

class.module.name

Структура проекта

spring4shell-local-verification-lab/

  • README.md: описание проекта, методика тестирования, результаты проверки и пояснения по устранению
  • docs/: отчёт о локальной проверке условий влияния, устранении и повторном тестировании Spring4Shell
  • images/: скриншоты среды проекта, процесса тестирования и повторного тестирования
  • vulnerable-demo/: проект до устранения на Spring Framework 5.3.17
  • fixed-demo/: проект после устранения на Spring Framework 5.3.18
  • notes/: учебные заметки и записи процесса

Основная структура исходного кода:

  • config/: классы конфигурации Spring MVC и классы инициализации приложения
  • controller/: контроллер обработки форм и диагностики путей свойств
  • model/: класс UserProfile для приёма параметров имени и электронной почты
  • WEB-INF/views/: JSP-страницы главной страницы, результата отправки и результата диагностики

Описание тестовых проектов

В рамках проекта созданы два приложения Spring MVC — до и после устранения уязвимости.

Проект до устранения

Каталог проекта:

vulnerable-demo

Используемая версия:

Spring Framework 5.3.17

Создаваемый WAR-файл:

spring4shell-vulnerable-demo.war

Адрес доступа:

http://127.0.0.1:8080/spring4shell-vulnerable-demo/

Диагностическая страница:

http://127.0.0.1:8080/spring4shell-vulnerable-demo/binding-probe

Проект после устранения

Каталог проекта:

fixed-demo

Используемая версия:

Spring Framework 5.3.18

Создаваемый WAR-файл:

spring4shell-fixed-demo.war

Адрес доступа:

http://127.0.0.1:8080/spring4shell-fixed-demo/

Диагностическая страница:

http://127.0.0.1:8080/spring4shell-fixed-demo/binding-probe

Описание штатной функциональности

Тестовый проект предоставляет простую форму профиля пользователя, содержащую:

  • Поле ввода имени
  • Поле ввода электронной почты
  • Кнопку отправки данных

Контроллер принимает параметры запроса следующим образом:

@ModelAttribute("profile") UserProfile profile

Когда пользователь отправляет имя и электронную почту, Spring MVC автоматически привязывает параметры name и email к объекту UserProfile.

Страница результата считывает связанный объект и отображает отправленные пользователем имя и адрес электронной почты.

Эта функция используется для подтверждения нормальной работы проекта, а также для доказательства наличия действующей точки входа привязки данных параметров запроса Spring MVC в приложении.

Методика тестирования

Проект построен по принципу «сначала подтвердить штатную функциональность, затем подтвердить условия влияния, после чего провести диагностику рисков в режиме только для чтения, и наконец устранить уязвимость и провести повторное тестирование».

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