Apache Shiro 认证绕过漏洞 CVE-2020-1957 漏洞复现
本文转自Senimo_ 并作补充
漏洞描述
Apache Shiro 是一款开源安全框架,提供身份验证、授权、密码学和会话管理。Shiro框架直观、易用,同时也能提供健壮的安全性。
CVE-2020-1957,Spring Boot中使用 Apache Shiro 进行身份验证、权限控制时,可以精心构造恶意的URL,利用 Apache Shiro 和 Spring Boot 对URL的处理的差异化,可以绕过 Apache Shiro 对 Spring Boot 中的 Servlet 的权限控制,越权并实现未授权访问。
漏洞影响
环境搭建
执行如下命令启动一个搭载Spring 2.2.2与Shiro 1.5.1的应用:
1
2 cd vulhub/shiro/CVE-2020-1957
docker-compose up -d环境启动后,访问
http://x.x.x.x:8080
即可查看首页:这个应用中对URL权限的配置如下:
1
2
3
4
5
6
7
8
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;
}
漏洞复现
使用BurpSuite抓取数据包,访问
/admin/
目录:回显
302
并跳转到登录页面:构造恶意请求
/xxx/..;/admin/
,即可绕过权限校验,访问到管理页面:URL请求过程:
- 客户端请求URL:
/xxx/..;/admin/
- Shrio 内部处理得到校验URL为
/xxxx/..
,校验通过- SpringBoot 处理
/xxx/..;/admin/
, 最终请求/admin/
, 成功访问了后台请求。
漏洞POC
构造恶意请求
/xxx/..;/admin/
,即可绕过权限校验,访问到管理页面。
参考链接
https://www.safedog.cn/news.html?id=4441
https://blog.spoock.com/2020/05/09/cve-2020-1957/