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

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

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

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

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

Категории

Все категории
Loading categories
cve-2024-38819 — Глубокий анализ CVE-2024-38819, уязвимости обхода файлов в Spring WebFlux, с разбором на уровне кода, PoC и стратегиями смягчения, включая фильтры и правила IPS. | Kitploit
Инструменты/GitHubGitHub/skrkcb2/cve-2024-38819
Анализ уязвимостейЭксплуатацияВеб-безопасностьТестирование на ПроникновениеСтатьи и ИсследованияОбучение и Образование
GitHubskrkcb2/cve-2024-38819

cve-2024-38819

Глубокий анализ CVE-2024-38819, уязвимости обхода файлов в Spring WebFlux, с разбором на уровне кода, PoC и стратегиями смягчения, включая фильтры и правила IPS.

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

Популярное

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

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

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

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

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

CVE-2024-38819

01. Обзор File-Traversal и Webflux

  • 1) Обзор File-Traversal и WebFlux

    Уязвимость File-Traversal (обход пути, Path Traversal) позволяет злоумышленнику обходить разрешения файловой системы веб-приложения и получать доступ к произвольным файлам; она классифицируется как CWE-22 и является одним из видов атак.

    Spring WebFlux — это модуль, представленный в Spring 5 и поддерживающий реактивное программирование для разработки асинхронных неблокирующих приложений. WebFlux.fn обеспечивает функциональную маршрутизацию конечных точек, позволяя лаконично и гибко настраивать маршруты с помощью лямбда-выражений.

    CVE-2024-38819 возникает в приложениях, использующих WebFlux.fn или WebMVC.fn; в данном документе мы рассмотрим, как эта уязвимость проявляется на примере WebFlux, проследим поток кода и предложим меры противодействия.

02. Анализ уязвимости File-Traversal в среде Webflux 6.13

  • 2.1 Анализ File-Traversal с использованием Webflux 6.13

    В Spring Webflux 6.13 можно осуществить атаку File-Traversal через пример обслуживания статических ресурсов (static resources).
    Рассмотрим пример, чтобы понять, как Spring Webflux приводит к File-Traversal.

1) Поток атаки File-Traversal с использованием Spring Webflux 6.13

описание изображения

[Рисунок 1] FileApplication.java

[Рисунок 1] показывает, что в Spring WebFlux все запросы, поступающие на /static/**, обслуживаются из каталога C:/file на сервере. Здесь
при вызове RouterFunctions.resources начинается проблема в [Рисунок 2], [Рисунок 3] в классе PathResourceLookupFunction.class в webflux.

описание изображения

[Рисунок 2] PathResourceLookupFunction.class - apply

[Рисунок 2] PathResourceLookupFunction - apply проверяет, указывает ли заданный путь на допустимый ресурс, и возвращает его в виде
Mono. В этом процессе выполняются несколько этапов: сопоставление пути, проверка валидности, декодирование пути, доступ к ресурсу и т.д. Уязвимость возникает в функции isInvalidPath.

описание изображения

[Рисунок 3] PathResourceLookupFunction.class - isInvalidPath

[Рисунок 3] PathResourceLookupFunction - isInvalidPath содержит условие StringUtils.cleanPath(path).contains("../").
При запросе http://localhost:8080/static/file/../Windows/System32/drivers/etc/hosts это условие не может быть истинным. Причина:

описание изображения

описание изображения

[Рисунок 4] StringUtils.class - cleanPath

[Рисунок 4] StringUtils.class - cleanPath показывает, что StringUtils.cleanPath(path) удаляет TOP_PATH (".."), помещает путь в pathElements, и top становится равным 0,
поэтому конструкция с одним ".." обрабатывается как обычный путь. В результате функция isInvalidPath из [Рисунок 3] возвращает false.

описание изображения

[Рисунок 5] PathResourceLookupFunction.class - apply - 2

описание изображения

[Рисунок 6] PathResourceLookupFunction.class - isResourceUnderLocation

При вызове cleanPath в isResourceUnderLocation из [Рисунок 5] происходит ещё одна проверка через cleanPath, и путь, переданный в [Рисунок 5], имеет вид C:/file../Windows/System32/drivers/etc/hosts.

описание изображения

[Рисунок 7] StringUtils.class - cleanPath -2

С помощью кода из [Рисунок 7] префикс становится C:/, а путь, пройдя через [Рисунок 4], преобразуется в /Windows/System32/drivers/etc/hosts, и в итоге возвращается
C:/Windows/System32/drivers/etc/hosts — такова последовательность обработки.

2) Пример атаки File-Traversal с использованием Spring Webflux 6.13

В данном случае тестирование проводилось на Windows с каталогом C:/file, но этот сценарий очень опасен при работе на Linux с символическими ссылками.
(При двухкратном использовании ../ путь становится корректным; уязвимость возникает только при однократном ../) 20250207_150316

2-1) Пример атаки File-Traversal с использованием Spring Webflux 6.13 — вариант 2

Атака на сервере Linux с символической ссылкой

 public RouterFunction<ServerResponse> staticResourceRouter() {
     return RouterFunctions.resources("/static/**", new FileSystemResource("/app/static/"));
 }

Добавление символической ссылки ln -s /static /app/static/link, затем атака 20250208_101836

03. Меры противодействия

Мы рассмотрели поток выполнения File Traversal (CVE-2024-38819) в среде Spring Webflux. Поскольку это атака с целью кражи информации с сервера, меры реагирования очень важны. В связи с этим предлагаем обновление до последней версии, создание дополнительной логики проверки и блокировку с помощью IPS.

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