发布于 

CVE-2020-1957(Shiro<1.5权限绕过)

1. 漏洞描述

Shiro框架通过拦截器功能来对用户访问权限进行控制,如anon, authc等拦截器。anon为匿名拦截器,不需要登录即可访问;authc为登录拦截器,需要登录才可以访问。主要是Spring web在匹配url的时候没有匹配上/导致绕过。

2. 影响范围

Apache Shiro < 1.5.3

3. 未授权绕过思路

客户端请求URL:/xxx/..;/admin/

  1. Shiro内部处理得到校验:/xxx/..校验通过
  2. SpringBoot先处理:/xxx/..; 结束,最终请求/admin/访问到后台

路径最后的 / 代表一个目录,如果不加代表一个资源

4. 漏洞复现

4.1 未授权访问后台页面

访问/admin/ 遇到302跳转

image-20221018234701838

4.2 利用Java特性绕过

访问/xx/..;/admin/ 实现绕过

image-20221018235923355

image-20221019000334472

5. 漏洞分析

6. 修复建议

  1. 升级1.5.2版本及以上

  2. 尽量避免使用*通配符作为动态路由拦截器的URL路径表达式。