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
漏洞分析漏洞利用Web安全渗透测试论文与研究学习与教育
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)漏洞是攻击者绕过 Web 应用程序的文件系统权限,访问任意文件的漏洞,被指定为 CWE-22 的一种攻击类型。

    Spring WebFlux 是 Spring 5 引入的支持响应式编程的模块,支持异步非阻塞应用程序开发,WebFlux.fn 提供函数式端点路由,可使用 lambda 表达式实现简洁灵活的路由配置。

    CVE-2024-38819 出现在使用 WebFlux.fn、WebMVC.fn 的应用程序中,本文档将基于 WebFlux 探讨该漏洞是如何通过代码流程发生的,并寻求相应的应对方案。

02. Webflux 6.13 环境下的 File-Traversal 漏洞分析

  • 2.1 使用 Webflux 6.13 进行 File-Traversal 分析

    通过 Spring Webflux 6.13 中提供静态资源服务的示例,可以进行 File-Traversal 攻击。
    本示例将探讨如何利用 Spring Webflux 引发 File-Traversal 漏洞。

1) 利用 Spring Webflux 6.13 进行 File-Traversal 攻击流程

图像描述

[图 1] FileApplication.java

[图 1] 显示了 Spring WebFlux 将所有对 /static/** 的请求从服务器 C:/file 目录查找并提供服务。这里
在调用 RouterFunctions.resources 时,[图 2]、[图 3] 中 webflux 的 PathResourceLookupFunction.class 开始出现的问题。

图像描述

[图 2] PathResourceLookupFunction.class - apply

[图 2] PathResourceLookupFunction - apply 方法在 Spring WebFlux 中检查给定路径是否指向有效资源,并以
Mono 形式返回该资源。在此过程中,执行路径匹配、有效性检查、路径解码、资源访问等多个步骤,在 isInvalidPath
函数中产生漏洞。

图像描述

[图 3] PathResourceLookupFunction.class - isInvalidPath

[图 3] PathResourceLookupFunction - isInvalidPath 中,存在条件 `StringUtils.cleanPath(path).contains("../")`,
当请求 `http://localhost:8080/static/file/../Windows/System32/drivers/etc/hosts` 时,该条件不能为 True。原因如下:

图像描述

图像描述

[图 4] StringUtils.class - cleanPath

[图 4] StringUtils.class - cleanPath 中,`StringUtils.cleanPath(path)` 在移除 TOP_PATH("..") 后将路径放入 pathElements,top 变为 0,因此
包含一次 ".." 的攻击语句被当作正常语句处理。于是 [图 3] 的 isInvalidPath 函数返回 false,

图像描述

[图 5] PathResourceLookupFunction.class - apply - 2

图像描述

[图 6] PathResourceLookupFunction.class - isResourceUnderLocation

[图 5] 中的 isResourceUnderLocation 通过调用 cleanPath,[图 6] 显示再次经过 cleanPath 验证,[图 5] 传递的路径是 `C:/file../Windows/System32/drivers/etc/hosts`

图像描述

[图 7] StringUtils.class - cleanPath -2

通过 [图 7] 的代码,prefix 变为 `C:/`,路径通过 [图 4] 变为 `/Windows/System32/drivers/etc/hosts`,最终返回
`C:/Windows/System32/drivers/etc/hosts` 的处理流程。

2) 利用 Spring Webflux 6.13 进行 File-Traversal 攻击示例

目前在 Windows 上使用 C:/file 进行了测试,但该案例在 Linux 上配合符号链接运行时非常危险。
(当设置两次 ../ 时逻辑正常,仅当 ../ 出现一次时触发漏洞) 20250207_150316

2-1) 利用 Spring Webflux 6.13 进行 File-Traversal 攻击示例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. 应对方案

迄今为止,我们检查了在 Spring Webflux 环境中 File Traversal (CVE-2024-38819) 的执行流程。由于这是一种窃取服务器信息的攻击方式,所以应对方案非常重要。为此,我们将提出更新到最新版本、制作额外的审查逻辑、以及通过 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 在 URL 中包含 ../ 路径进行请求
    image 完全阻断导致 ../ 上级目录移动的 URL 请求
    20250210_150316

04. 结论

到目前为止,我们了解了通过 Webflux 的 File Traversal 漏洞。该漏洞是由于没有意识到 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

下载工具