娱乐

apache shiro身份验证绕过漏洞

时间:2010-12-5 17:23:32  作者:热点   来源:探索  查看:  评论:0
内容摘要:Apache Shiro的身份验证绕过漏洞,说白了就是攻击者能骗过登录检查,以未授权身份访问受保护资源。这不是理论上的威胁,CVE-2020-1957、CVE-2020-11989、CVE-2020-

Apache Shiro的份验身份验证绕过漏洞,说白了就是证绕攻击者能骗过登录检查,以未授权身份访问受保护资源。过漏这不是份验理论上的威胁,CVE-2020-1957、证绕CVE-2020-11989、过漏CVE-2020-13933,份验一连串编号背后都是证绕真实被利用过的案例。我见过不少团队,过漏把Shiro当安全铁闸,份验结果闸门早被撬开了一道缝。证绕

问题出在Shiro处理路径匹配的过漏方式上。它用Ant风格模式,份验比如`/admin/**`来定义哪些URL需要认证。证绕但Shiro在解析请求路径时,过漏会做标准化处理——把`..`、`//`、分号这类特殊字符解析掉。这一解析,就和Servlet容器的解析规则产生了差异。攻击者只要利用这个差异,构造特殊URL,就能让Shiro以为请求不需要认证,而真正到达后端Servlet时,路径又变成了受保护的资源。

举个具体例子。假设应用里配置了`/user/info/**`需要登录。攻击者发送请求`/user/info/;/../admin/delete`。Shiro拿到这个路径,看到分号,可能认为这是`/user/info/`下的子路径,直接放行。但Tomcat或Jetty解析时,分号后的内容被当作路径参数忽略,`/..`又把路径回退到`/admin/delete`。就这样,一个本应拦截的请求,畅通无阻地执行了管理员操作。这不是我编的,CVE-2020-11989就是类似思路。

修复方案看起来简单:升级到Shiro 1.5.3以上版本。但现实里,很多老系统还在跑着1.2.x甚至更早的版本。为什么?因为升级Shiro可能连带影响Spring、权限注解、会话管理,一堆兼容性问题。我见过一个金融项目,为了修这个漏洞,光回归测试就做了两周。更头疼的是,有些开发同学觉得“我们系统不对外,内网没事”,这种想法害死人——内网横向渗透时,这种漏洞就是跳板。

还有个容易被忽略的点。即便你升级了Shiro,如果自定义了过滤器或重写了路径匹配逻辑,可能又引入新的绕过。漏洞的本质是“解析不一致”,只要你的代码里存在两套路径理解方式,就有风险。我建议做安全测试时,专门用畸形URL去撞接口——`/api/..;/admin`、`/%2e%2e/admin`、`/admin%3b`,这些奇奇怪怪的组合,比常规扫描器管用多了。

说到底,Shiro这个漏洞给我们的教训是:安全框架不是黑盒。你得知道它内部怎么解析路径,怎么和你的Web容器协作。别指望配个拦截器就万事大吉。每次上线前,用工具跑一遍路径混淆测试,花不了半小时,但能省掉被通报、被勒索的麻烦。毕竟,攻击者不会因为你用了“主流框架”就手下留情——他们专挑主流框架下手,因为目标多,收益高。

最近更新
热门排行
copyright © 2026 powered by 烟消火灭网   sitemap