影响范围

  • Apache Shiro 1.0.0-incubating - 1.5.1

漏洞类型

权限绕过

操作系统限制

配置要求

  • Shiro 拦截器采用了路径匹配模式

漏洞利用

登录管理后台,信息泄露

利用原理

在 Shiro 的 1.5.2 之前的版本中,WebUtils.getPathWithinApplication() 方法处理 URL 时候会根据分号对路径进行截断,会认为分号后面不属于路径一部分;而 Spring 框架在匹配控制器路由时候,会对 URL 进行标准化处理(例如解析穿越符..),它对分号处理方式不同。二者对请求的解析不一样,攻击者通过特殊构造/;/路径来绕过 Shiro 的过滤

漏洞复现

现成的 vulhub 来拉取镜像

1
2
3
4
5
6
#下载vulhub源代码
git clone https://github.com/vulhub/vulhub.git
#进入漏洞目录
cd vulhub/shiro/CVE-2020-1957
#拉取镜像
docker-compose up -d

1773379459769

抓取 http://靶机 ip:8080/admin 数据包

1773379499778

发送到 Repeater 模块

1773379535602

直接发送会返回 302 重定向到登录页面

1773379578505

修改路径/;/admin/

1773379613741

发送后返回 200,说明成功绕过登录验证

1773379650630

后续可以直接访问 http://公网: 8080/;/admin/,可以看到绕过了登录

1773379674688