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

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

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.

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

Популярное

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

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

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

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

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

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] показывает, что в Spring WebFlux все запросы, поступающие на /static/**, обслуживаются из каталога C:/file на сервере. Здесь при вызове RouterFunctions.resources начинается проблема в [Рисунок 2], [Рисунок 3] в классе PathResourceLookupFunction.class в webflux. [Рисунок 2] PathResourceLookupFunction - apply проверяет, указывает ли заданный путь на допустимый ресурс, и возвращает его в виде Mono. В этом процессе выполняются несколько этапов: сопоставление пути, проверка валидности, декодирование пути, доступ к ресурсу и т.д. Уязвимость возникает в функции isInvalidPath. [Рисунок 3] PathResourceLookupFunction - isInvalidPath содержит условие StringUtils.cleanPath(path).contains("../"). При запросе http://localhost:8080/static/file/../Windows/System32/drivers/etc/hosts это условие не может быть истинным. Причина: [Рисунок 4] StringUtils.class - cleanPath показывает, что StringUtils.cleanPath(path) удаляет TOP_PATH (".."), помещает путь в pathElements, и top становится равным 0, поэтому конструкция с одним ".." обрабатывается как обычный путь. В результате функция isInvalidPath из [Рисунок 3] возвращает false. При вызове cleanPath в isResourceUnderLocation из [Рисунок 5] происходит ещё одна проверка через cleanPath, и путь, переданный в [Рисунок 5], имеет вид C:/file../Windows/System32/drivers/etc/hosts. С помощью кода из [Рисунок 7] префикс становится C:/, а путь, пройдя через [Рисунок 4], преобразуется в /Windows/System32/drivers/etc/hosts, и в итоге возвращается C:/Windows/System32/drivers/etc/hosts — такова последовательность обработки.

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

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

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



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

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



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

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


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

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

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


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

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

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

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

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

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


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

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

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

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

root@kitploit:~
 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.

  • Обновление Spring Framework

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

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

  • Пример создания дополнительной логики проверки

    Как видно из примеров атак, проблема возникает при однократном использовании TOP_PATH (..), поэтому предлагается простой фильтр (разработчики могут дополнить его по своему усмотрению).
    root@kitploit:~
    @Bean
    public RouterFunction<ServerResponse> staticResourceRouter() {    
      return RouterFunctions.resources("/static/**", new FileSystemResource("C:/file"))
              .filter((request, next) -> {
                  String path = request.path();
                  if (path.contains("..")) {
                     if(!StringUtils.cleanPath(path).contains("../")) {
                         return ServerResponse.status(HttpStatus.FORBIDDEN).bodyValue("Vuln path access.");
                     }        
                  }
                  return next.handle(request);
              });
    }
    
  • Блокировка с помощью IPS

    Пример атаки: запрос через Postman с путём, содержащим ../
    image Блокировка всех URL-запросов, вызывающих перемещение в родительский каталог ../
    20250210_150316

04. Заключение

Мы рассмотрели File Traversal через Webflux. Эта уязвимость возникла из-за того, что не была замечена проблема в логике StringUtils.cleanPath().

05. Ссылки

(POC) https://github.com/masa42/CVE-2024-38819-POC
(Официальный сайт Spring) https://spring.io/security/cve-2024-38819
(CVE-DETAIL) https://www.cvedetails.com/cve/CVE-2024-38819/
(NIST) https://nvd.nist.gov/vuln/detail/cve-2024-38819

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