CVE-2021-21234 Spring Boot Actuator Logview 目录遍历

2021-12-29 14:53:09 浏览数 (2)

在 spring-boot-actuator-logview 0.2.13 之前,该securityCheck()方法存在于 中LogViewEndpoint,但该securityCheck()方法只过滤..infileName,忽略了 的安全检查basePath,因此攻击者可以构建有效载荷,逃避 check inbasePath

启动SpringBoot项目的tomcat服务器,如果页面是这样,说明SpringBoot Actutor Logview运行良好。

securityCheck()在PoC发送HTTP请求的同时设置break piont,http://localhost:8887/manage/log/view?filename=/etc/passwd&base=../../../../../进入截图如下

首先进入 lggingPath()

然后进入streamContent, 这里可以看到spring.log/../../../../../文件夹,/etc/passwd就是我们要读取的文件。

下一步进入toFile()方法,文件夹spring.log/../../../../../和文件/etc/passwd将被连接为最终路径,不再进行保密检查。

因此,您可以检索文件的内容 /etc/passwd

概念证明

http://localhost:8887/manage/log/view?filename=/etc/passwd&base=../../../../../

从 spring-boot-actuator-logview 0.2.13 开始,basePath有严格的安全检查,不再允许路径遍历。

参考

https://github.com/lukashinsch/spring-boot-actuator-logview/commit/760acbb939a8d1f7d1a7dfcd51ca848eea04e772

0 人点赞