Skip to content
KitploitKITPLOIT
FerramentasBlog
Enviar
FerramentasBlog
Enviar

Ferramentas de Hacking, PenTest e Cibersegurança para o seu Arsenal de Segurança!

Kitploit é um diretório de ferramentas de hacking, cibersegurança e pentesting. Descubra as últimas atualizações de projetos para encontrar vulnerabilidades, analisar sistemas, automatizar testes e fortalecer sua segurança.

··Feeds·Contato·Privacidade·© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
cve-2024-38819 — Análise aprofundada de CVE-2024-38819, uma vulnerabilidade de travessia de arquivo Spring WebFlux, com detalhamento em nível de código, PoC e estratégias de mitigação incluindo filtros e regras de IPS. | Kitploit
Ferramentas/GitHubGitHub/skrkcb2/cve-2024-38819
Análise de VulnerabilidadesExploraçãoSegurança WebTestes de PenetraçãoPapers e PesquisaAprendizado e Educação
GitHubskrkcb2/cve-2024-38819

cve-2024-38819

Análise aprofundada de CVE-2024-38819, uma vulnerabilidade de travessia de arquivo Spring WebFlux, com detalhamento em nível de código, PoC e estratégias de mitigação incluindo filtros e regras de IPS.

Ver Repositório
1há 1 anoAinda não revisado

Mais Populares

Ver todos →

Descubra as ferramentas mais usadas pela nossa comunidade.

Explore todas as ferramentas

Navegue pela nossa coleção de ferramentas

Ver todas as ferramentas →
Compartilhar

CVE-2024-38819

01. Visão geral de File-Traversal e WebFlux

  • 1) Visão geral de File-Traversal e WebFlux

    A vulnerabilidade File-Traversal (navegação de caminho, Path Traversal) é uma vulnerabilidade que permite a um atacante contornar as permissões do sistema de arquivos em uma aplicação web e acessar arquivos arbitrários, sendo um tipo de ataque designado como CWE-22.

    O Spring WebFlux é um módulo introduzido no Spring 5 que oferece suporte à programação reativa, permitindo o desenvolvimento de aplicações assíncronas não bloqueantes. O WebFlux.fn fornece roteamento de endpoints funcional, suportando uma configuração de roteamento concisa e flexível por meio de expressões lambda.

    A CVE-2024-38819 ocorre em aplicações que utilizam WebFlux.fn e WebMVC.fn. Este documento examina o fluxo de código de como essa vulnerabilidade ocorre no contexto do WebFlux e busca explorar medidas de mitigação correspondentes.

02. Análise da vulnerabilidade File-Traversal no ambiente WebFlux 6.13

  • 2.1 Análise de File-Traversal usando WebFlux 6.13

    É possível realizar um ataque de File-Traversal por meio de um exemplo de serviço de no Spring WebFlux 6.13. Ao examinar o exemplo, pretendemos entender como o File-Traversal é causado usando o Spring WebFlux.
[Figura 1] No Spring WebFlux, todas as requisições que chegam a /static/** são servidas a partir do diretório C:/file do servidor. Aqui, durante a chamada de RouterFunctions.resources, o problema começa no PathResourceLookupFunction.class do WebFlux, conforme [Figura 2] e [Figura 3]. [Figura 2] PathResourceLookupFunction - apply verifica se o caminho fornecido aponta para um recurso válido no Spring WebFlux e retorna esse recurso na forma de Mono. Durante esse processo, várias etapas são executadas — correspondência de caminho, validação, decodificação de caminho, acesso ao recurso etc. — e a vulnerabilidade ocorre na função isInvalidPath. [Figura 3] Em PathResourceLookupFunction - isInvalidPath, existe a condição StringUtils.cleanPath(path).contains("../"), mas, ao solicitar http://localhost:8080/static/file/../Windows/System32/drivers/etc/hosts, essa condição não pode se tornar True. A razão é que [Figura 4] Em StringUtils.class - cleanPath, StringUtils.cleanPath(path) remove TOP_PATH("..") e insere o caminho em pathElements, com top tornando-se 0, portanto uma sintaxe de ataque com ".." inserido uma vez é tratada como sintaxe normal. Assim, a função isInvalidPath da [Figura 3] retorna false, e [Figura 5] Com a chamada de cleanPath em isResourceUnderLocation, uma nova validação é realizada por meio de cleanPath na [Figura 6], sendo o caminho encaminhado na [Figura 5] C:/file../Windows/System32/drivers/etc/hosts. [Figura 7] Através do código da [Figura 7], o prefixo torna-se C:/ e o caminho é alterado para /Windows/System32/drivers/etc/hosts por meio da [Figura 4], de modo que o retorno final é processado como C:/Windows/System32/drivers/etc/hosts.
recurso estático (static resource)

1) Fluxo do ataque File-Traversal usando Spring WebFlux 6.13

descrição da imagem

[Figura 1] FileApplication.java



descrição da imagem

[Figura 2] PathResourceLookupFunction.class - apply




descrição da imagem

[Figura 3] PathResourceLookupFunction.class - isInvalidPath


descrição da imagem

descrição da imagem

[Figura 4] StringUtils.class - cleanPath


descrição da imagem

[Figura 5] PathResourceLookupFunction.class - apply - 2

descrição da imagem

[Figura 6] PathResourceLookupFunction.class - isResourceUnderLocation

descrição da imagem

[Figura 7] StringUtils.class - cleanPath -2


2) Exemplo de ataque File-Traversal usando Spring WebFlux 6.13

Atualmente, o teste foi realizado no Windows com C:/file, mas esse caso é muito perigoso quando combinado com um link simbólico no Linux.
(Quando configurado com ../../ duas vezes, é uma lógica normal; a vulnerabilidade ocorre somente quando há um único ../) 20250207_150316

2-1) Exemplo 2 de ataque File-Traversal usando Spring WebFlux 6.13

Ataque com link simbólico no servidor Linux

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

Após adicionar o link simbólico ln -s /static /app/static/link, realizar o ataque 20250208_101836

03. Medidas de mitigação

Até agora, verificamos o fluxo em que o File Traversal (CVE-2024-38819) é executado no ambiente Spring WebFlux. Por ser um método de ataque que rouba as informações do servidor,
as medidas de mitigação são importantes. Para isso, propomos a atualização para a versão mais recente, a criação de lógica adicional de verificação e o bloqueio por meio de IPS.

  • Atualização do Spring Framework

    Consulte a tabela abaixo, verifique a versão em uso e faça o upgrade.

    descrição da imagem

  • Exemplo de criação de lógica adicional de verificação

    Como visto no exemplo de ataque acima, o caso em que TOP_PATH(..) é incluído uma vez é o problema, então uma lógica simples de aplicação de filtro (após consulta, os desenvolvedores podem adicionar mais)
    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);
              });
    }
    
  • Bloqueio por meio de IPS

    Exemplo de ataque: requisição por meio do Postman incluindo o caminho ../ na URL
    image Bloquear todas as requisições de URL que causam a navegação para o caminho superior (../)
    20250210_150316

04. Conclusão

Até agora, examinamos o File Traversal por meio do WebFlux. Essa vulnerabilidade foi um caso em que o problema decorrente da lógica de StringUtils.cleanPath() não foi reconhecido antes da utilização.

05. Referências

(POC) https://github.com/masa42/CVE-2024-38819-POC
(Site oficial do 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

Baixar ferramenta