1 漏洞信息
漏洞名称 | Shiro认证绕过漏洞 |
---|---|
漏洞编号 | CVE-2020-1957 |
危害等级 | 高危 |
CVSS评分 | 7.5 |
漏洞类型 | 中间件漏洞 |
漏洞厂商 | Apache |
漏洞组件 | Shiro |
受影响版本 | Apache Shiro < 1.5.2 |
漏洞概述 | 使用 Apache Shiro 进行身份验证、权限控制时,可以精心构造恶意的URL,利用Apache Shiro 和 Spring Boot 对URL的处理的差异化,可以绕过Apache Shiro 对 Spring Boot 中的 Servlet的权限控制,越权并实现未授权访。 |
2 环境搭建
2.1 环境概述
- Linux操作系统(vulhub)
2.2 搭建过程
拉取镜像并且启动镜像
{width=“5.763194444444444in”
height=“0.55625in”}
3 漏洞复现
通过dirsearch扫描发现有一个admin,但是重定向到了login页面
{width=“5.761805555555555in”
height=“2.435416666666667in”}
访问url,发现需要进行登录
{width=“4.066666666666666in”
height=“3.933333333333333in”}
构造恶意payload,/任意字符/…;admin./,发现绕过登录,成功进入到了admin页面
{width=“5.763194444444444in”
height=“3.689583333333333in”}
{width=“5.761111111111111in”
height=“2.692361111111111in”}
4 漏洞流程
-
客户端发起一个url请求:/abc/…;/admin/。
-
shiro内部进行校验的时候,发现存在;号,因此只校验;号之前的url:/abc/…,没有检验到后面的admin。检验通过。
-
springboot处理客户发起的url:/abc/…;/admin/时,经过内部的处理,最终请求的是/admin,即成功实现了身份绕过。
5 修复建议
-
升级1.5.2版本及以上
-
尽量避免使用*通配符作为动态路由拦截器的URL路径表达式。