1、影响版本
Apache Shiro < 1.5.2
2、漏洞原因
Shiro框架通过拦截器功能来对用户访问权限进行控制,如anon, authc等拦截器。anon为匿名拦截器,不需要登录即可访问;authc为登录拦截器,需要登录才可以访问。
3、漏洞复现
这里使用的环境是kali中的vulhub和docker。
进入/vulhub/shiro/CVE-2020-1957目录,执行docker-compose up -d开启环境。
访问http://IP:8080,出现如下页面:

抓取数据包,将url修改为/admin访问,在响应中可以看到响应码是302重定向。

再次将url修改为/xxx/...;/admin,响应码为200,成功访问。

4、绕过原理
我们请求的URL在整个项目的传入传递过程,在使用了shiro的项目中,是我们请求的URL(URL1),经过shiro权限检验(URL2), 最后到springboot项目找到路由来处理(URL3)。漏洞的出现就在URL1,URL2和URL3 有可能不是同一个URL,这就导致我们能绕过shiro的校验,直接访问后端需要首选的URL。
本文详细介绍了Apache Shiro框架中的CVE-2020-1957漏洞,该漏洞允许攻击者通过构造特定URL绕过权限拦截器,实现未授权访问。复现环境为Kali Linux中的Vulhub和Docker。漏洞的根本原因是URL在Shiro权限检查和Spring Boot路由处理之间的不一致性,导致可以绕过Shiro的权限控制直接访问受保护的资源。

2254

被折叠的 条评论
为什么被折叠?



