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

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

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

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

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

Категории

Все категории
Loading categories
CVE-2024-22243 — Примеры эксплуатируемых сценариев для CVE-2024-22243, затрагивающего Spring framework (открытое перенаправление и SSRF). | Kitploit
Инструменты/GitHubGitHub/seanpesce/cve-2024-22243
Анализ уязвимостейАнализ КодаЭксплуатацияЭксплуатация веб-приложенийВеб-безопасностьCTFОбучение и Образование
GitHubseanpesce/cve-2024-22243

CVE-2024-22243

Примеры эксплуатируемых сценариев для CVE-2024-22243, затрагивающего Spring framework (открытое перенаправление и SSRF).

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

Популярное

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

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

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

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

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

CVE-2024-22243

Автор: Sean Pesce

Этот проект содержит пример веб-приложения, демонстрирующего сценарии эксплуатации для CVE-2024-22243, уязвимости разбора URL в Java-фреймворке Spring Framework (официальное раскрытие здесь).

Уязвимость

Затронутые версии Spring разбирают сегмент userinfo URL-адресов уникальным образом, из-за чего извлечённый сегмент имени хоста может отличаться от того, что получают многие другие распространённые библиотеки.

Аномальное поведение вызвано следующим регулярным выражением ("regex") в классе UriComponentsBuilder (добавленным этим коммитом в 2014 году):

root@kitploit:~
private static final String USERINFO_PATTERN = "([^@\\[/?#]*)";

Это регулярное выражение не допускает символ «левая квадратная скобка» ([) в сегменте userinfo. Однако, судя по всему, Spring является исключением в этом поведении, поэтому вызов для объекта , созданного с помощью или , может приводить к неожиданному поведению. Классы , и также затронуты из-за их внутреннего использования ; следовательно, реализации могут оказаться уязвимыми даже без прямого использования .

getHost()
UriComponents
UriComponentsBuilder.fromUriString
UriComponentsBuilder.fromHttpUrl
RestTemplate
RestClient
WebClient
UriComponentsBuilder
UriComponentsBuilder

Для специально сформированных входных данных Spring возвращает значение имени хоста, которое отличается от всех перечисленных ниже:

  • Современные веб-браузеры, включая:
    • Chrome (и другие браузеры на основе Chromium)
    • Firefox
    • Safari
  • java.net.URI (по сообщениям, только для определённых версий Java; другие версии вызывают URISyntaxException)
  • java.net.URL
  • curl
  • android.net.Uri
  • okhttp3.HttpUrl
  • (Python 3) urllib.parse.urlparse

(Обратите внимание, что этот список не является исчерпывающим.)

Это поведение потенциально делает веб-приложения на основе Spring уязвимыми к открытому перенаправлению и подделке серверных запросов (SSRF), если зависящая от этих классов реализация использует доверенные имена хостов для авторизации или других механизмов, связанных с безопасностью.

Примеры

Пример веб-приложения содержит два уязвимых эндпоинта.

Первый эндпоинт /redirect показывает, как аномальный разбор URL в Spring может привести к открытому перенаправлению. Его можно эксплуатировать с помощью URL-адреса, например:

root@kitploit:~
https://127.0.0.1[@evil.com

Второй эндпоинт /health-check демонстрирует, как расхождение в разборе URL между Spring и классом URL из стандартной библиотеки Java может привести к подделке серверных запросов (SSRF). Его можно эксплуатировать с помощью URL-адреса, например:

root@kitploit:~
https://evil.com[@127.0.0.1

Использование

Чтобы собрать этот проект с помощью Maven, просто выполните следующую команду (проверено на OpenJDK 17):

root@kitploit:~
mvn clean package

Затем запустите веб-приложение, например, следующей командой:

root@kitploit:~
java -jar seanpesce-cve-2024-22243.jar 9999

Веб-приложение будет доступно по адресу http://127.0.0.1:9999/.

Docker

Чтобы собрать docker-образ, выполните следующую команду:

root@kitploit:~
docker build -t seanpesce-cve-2024-22243:latest .

Затем запустите веб-приложение, например, следующей командой:

root@kitploit:~
docker run -i -e PORT=9999 -p 9999:9999 seanpesce-cve-2024-22243:latest

Веб-приложение будет доступно по адресу http://127.0.0.1:9999/ на хосте Docker.

Semgrep

Этот репозиторий также содержит правила semgrep для поиска потенциально уязвимых путей кода. spring-cve-2024-22243_loose.yaml выполняет наивные проверки на любое использование уязвимых API; поэтому он часто возвращает большое количество ложных срабатываний. spring-cve-2024-22243_strict.yaml пытается использовать более строгую логику и анализ потоков данных (taint analysis); однако он не был тщательно протестирован и с высокой вероятностью может пропустить некоторые уязвимые реализации (особенно при отсутствии Semgrep Pro, который требуется для межфайлового анализа).

Другие ресурсы

  • Запись в базе данных NIST
  • Git-коммит, исправивший уязвимость
  • Демонстрация уязвимой реализации: Уязвимый OAuth-поток с открытым перенаправлением от threedr3am из SecCoder Security Lab
  • CVE-2024-22259, вторая уязвимость разбора URL, обнаруженная в ходе изучения последствий CVE-2024-22243
  • CVE-2024-22262, третья уязвимость разбора URL, обнаруженная в ходе изучения последствий первых двух уязвимостей
  • Шпаргалка PortSwigger по обходу URL, содержащая полезные нагрузки для CVE-2024-22243
Скачать инструмент