Loading

Shiro权限绕过(CVE-2020-1957)漏洞

Shiro权限绕过(CVE-2020-1957)漏洞

漏洞描述

在Apache Shiro 1.5.2以前的版本中,在使用Spring动态控制器时,攻击者通过构造..;这样的跳转,可以绕过Shiro中对目录的权限限制。

搭建漏洞复现环境

git clone --depth 1 https://github.com/vulhub/vulhub.git
cd ~/vulhub/shiro/CVE-2020-1957
sudo docker compose up -d

利用前提

需要已知是Sping 和shiro框架同时使用且需要符合shiro版本<1.5.2。

漏洞利用

该靶场的权限配置:

@Bean
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;
}

直接访问 /admin/ 会跳转302:

image-20260803011521148

但只要 /xxx/..;/admin/

则可以绕过权限校验,未授权访问:

image-20260803011631790

该漏洞产生的根本原因是 Apache ShiroSpring Framework 对 URL 路径的解析逻辑不一致。

shiro会取分号前面的内容来判断,Spring移除分号进行请求。

修复建议

升级shiro版本之1.5.2以上。

设置访问admin/**这些敏感路径的Ip白名单。

参考文章:

一文读懂面试官都在问的Shiro漏洞-51CTO.COM

Vulhub | Shiro CVE-2020-1957漏洞复现 - GoxHam23 - 博客园

posted @ 2026-08-03 02:14  幽暗天琴沙雕  阅读(7)  评论(0)    收藏  举报