前面章节已经对Shiro的功能和原理进行的简要的介绍,可见:追洞计划之渗透测试篇|Shiro反序列化
Apache Shiro是一款开源安全框架,提供身份验证、授权、密码学和会话管理。Shiro框架直观、易用,同时也能提供健壮的安全性。
在旧版本的Shiro,存在认证绕过漏洞,这里就对这几个漏洞进行总结。
漏洞原理
在前文有提及,Spring Boot中使用 Apache Shiro 进行身份验证、权限控制时,可以精心构造恶意的URL,利用 Apache Shiro 和 Spring Boot 对URL的处理的差异化,可以绕过 Apache Shiro 对 Spring Boot 中的 Servlet 的权限控制,实现未授权访。
即shiro和SpringBoot获取到的URL不相同,导致shiro鉴权后认为该URL有权限访问,Spring则会将用户前往目标URL
CVE-2020-1957|CVE-2020-11989|CVE-2020-13933
漏洞编号 | CVE-2020-1957 | CVE-2020-11989 | CVE-2020-13933 |
---|---|---|---|
影响版本 | Apache Shiro < 1.5.1 | Apache Shiro < 1.5.2 | Apache Shiro < 1.6 |
payload | /xxx/..;/admin/ | /;/test/admin/page | /admin/;page |
Shrio 处理结果 | /xxxx/.. | / | /admin/ |
SpringBoot 处理结果 | /admin/ | /admin/page | /admin/;page |
CVE-2020-13933 则是匹配非固定地址路由,比如
/admin/{name}
,因为shiro得到的是/admin/
,认为可以访问,见:org.apache.shiro.util.AntPathMatcher#doMatch;而Spring得到的是/admin/;page
,如果采取固定路由,则会因为找不到;page
,从而返回404
漏洞复现
-
正常访问管理页面,需要身份验证,会被重定向到登陆页
-
使用payload可以染过权限校验,访问到后台页面
复现过程
修复
升级Shiro到最新版本
总结
以上将常见的几个Shiro认证绕过漏洞进行总结,方便各位师傅进行横向对比。
往期回顾
后记
SpaceSec安全团队热衷分享网络安全相关的技术,希望能和各位师傅们一同成长,后续更新内容将会在公众号中持续更新,欢迎关注交流呀~
关注公众号 SpaceSec安全团队,回复关键字 "小程序",即可获得小程序解密工具,“子域名”-获取子域名工具,“先知”-获取先知社区文章合集,“病毒”-获取病毒分析系列工具包。
声明
-
本文初衷为分享网络安全知识,请勿利用技术做出任何危害网络安全的行为,由于传播、利用此文所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,与SpaceSec安全团队及作者无关!
-
文章中部分学习内容来自于网络,回馈予网络,如涉及版权问题,请联系删除。
-
SpaceSec 保留对文章绝对的解释权,转载与传播时须保证文章的完整性,同时标明出处。未经允许,禁止转载或用于商业用途。
参考
https://github.com/vulhub/vulhub
原文始发于微信公众号(SpaceSec安全团队):Shiro 认证绕过漏洞总结
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论