Shiro 授权绕过 (CVE-2022-32532)

Shiro 授权绕过 (CVE-2022-32532)

漏洞复现

image-20220901215817744

接口权限绕过

%0a

image-20220901215842696

漏洞分析

shiro配置文件的写法

所有url请求路径是permit下的的都要通过myFilter检查,不符合该路径的则直接访问

image-20220901215842697

而在MyFilter中,使用的是RegExPatternMatcher

image-20220901215842698

在RegexRequestMatcher中是使用了 Pattern.compile(pattern) 来进行正则匹配

RegexRequestMatcher 默认使用的正则匹配的 “.” 不会匹配换行符,因此可以使用在路径中添加换行符来绕过权限匹配

Java中的正则默认情况下.并不包含\r和\n字符,在正则表达式教程中也明确说明了.的含义,如下

image-20220901215842699

因此/permit/.*路径规则,虽然在开发者看来应该拦截所有/permit/下的请求,然而并没有。因此,其实从本质上讲,该漏洞是开发者自己对正则匹配的相关模式不熟悉最终配置不当造成的。

影响版本

Apache Shiro< 1.9.1

修复方式

升级到最新版,或者不用RegexRequestMatcher