Shiro 权限绕过漏洞(CVE-2020-1957)
漏洞原理
Spring Boot中使用 Apache Shiro 进行身份验证、权限控制时,利用 Apache Shiro 和 Spring Boot 对URL的处理的不同,实现越权访问。
比如/xxx/..;/admin/
这个路径,在shiro看到“;”分号后,就会进行截断,校验分号前面路径/xxx/..
这个路径并没有包含admin/**
于是校验通过。Spring Boot看到此路径后,会直接取有效路径/admin/
于是就访问成功了。
参考:
https://paper.seebug.org/1196/
https://blog.csdn.net/huangyongkang666/article/details/124176969
思考:为什么/xxx/..
后面必须是两个点“.”
影响版本
Apache Shiro < 1.5.1
漏洞复现
环境:
docker环境下vulhub靶场
- 访问靶机
点击按钮发现一个登录界面,登陆后有一个界面
登录成功后的界面
发现一个新的目录/admin
,需要登录后才能访问。
我们要做的就是利用Shiro 权限绕过漏洞(CVE-2020-1957)绕过登录,访问后台/admin
目录。 - 抓包,访问
/admin
发现拒绝访问302
- 了解漏洞原理后,直接构造url,访问
/ddd/...;/admin/
访问成功!