springboot 任意文件下载漏洞 CVE-2021-21234

文章目录

复现

项目地址:https://github.com/cristianeph/vulnerability-actuator-log-viewer

下载后使用IDEA打开工程,该漏洞是由spring-boot-actuator-logview 0.2.13之前的版本导致的。
在这里插入图片描述
运行项目,打开网址
在这里插入图片描述
poc如下:

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

验证如下:
在这里插入图片描述
通过报错可以知道漏洞代码出发位置eu.hinsch.spring.boot.actuator.logview.LogViewEndpoint#view:
在这里插入图片描述
进入函数,漏洞触发主要原因是:view函数对filename参数进行合法性校验,但是没有对base参数进行合法性校验
在这里插入图片描述
filename的校验函数
在这里插入图片描述

修复

升级到0.2.13
在这里插入图片描述
发现使用getCanonicalPath函数对跨目录符号进行了过滤

private void securityCheck(Path base, String filename) {
        try {
            String canonicalLoggingPath = (filename != null ? new File(base.toFile().toString(), filename) : new File(base.toFile().toString())).getCanonicalPath();
            String baseCanonicalPath = (new File(this.loggingPath)).getCanonicalPath();
            String errorMessage = "File " + base.toString() + "/" + filename + " may not be located outside base path " + this.loggingPath;
            Assert.isTrue(canonicalLoggingPath.startsWith(baseCanonicalPath), errorMessage);
        } catch (IOException var6) {
            throw new IllegalStateException(var6);
        }
    }
  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值