Apache Shiro CVE-2020-1957
漏洞描述
Apache Shiro是一款开源安全框架,提供身份验证、授权、密码学和会话管理。Shiro框架直观、易用,同时也能提供健壮的安全性。
CVE-2020-1957,Spring Boot中使用Apache Shiro进行身份验证、权限控制时,可以精心构造恶意的URL,利用Apache Shiro和Spring Boot对URL的处理的差异化,可以绕过Apache Shiro对Spring Boot中的Servlet的权限控制,越权并实现未授权访问。
本篇文章不涉及漏洞成因以及分析,大家可以看这几位师傅的文章,因为太菜了;
https://blog.spoock.com/2020/05/09/cve-2020-1957/
https://xz.aliyun.com/t/8281#toc-2
影响版本
Apache Shiro <=1.5.2
漏洞复现
0x01
执行如下命令启动一个搭载Spring 2.2.2与Shiro 1.5.1的应用:
docker-compose up -d
环境启动后,访问http://your-ip:8080
即可查看首页,不过不知道是什么原因,环境有点卡
这个应用中对URL权限的配置如下:
@Bean
public ShiroFilterChainDefinition shiroFilterChainDefinition() {
DefaultShiroFilterChainDefinition chainDefinition = new DefaultShiroFilterChainDefinition();
chainDefinition.addPathDefinition("/login.html", "authc"); // need to accept POSTs from the login form
chainDefinition.addPathDefinition("/logout", "logout");
chainDefinition.addPathDefinition("/admin/**", "authc");
return chainDefinition;
}
0x02
我们抓包或者直接去访问/admin/时,重定向到了登录页面
0x03
那么利用这个漏洞去构造恶意url来进行绕过权限校验,输入url为/xxx/..;/admin/
可以看到成功绕过登录访问成功,我们去可视化界面看一下,会更清楚一点,可以看到Logout
按钮,说明我们登录成功了已经;
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 doathuwant!