1. 极安网首页
  2. 网络安全技术

Shiro < 1.6.0 认证绕过漏洞分析(CVE-2020-13933)

可以看到,如果test目录的话,是默认有权限访问的,但是/test/后面的路由是需要验证的。

Shiro < 1.6.0 认证绕过漏洞分析(CVE-2020-13933)-极安网

接着我们来到springboot,看看springboot是怎么处理URL的问题。

Shiro < 1.6.0 认证绕过漏洞分析(CVE-2020-13933)-极安网

uri取到的是/test/;name,可以看到springboot对url做了三个操作后才返回的,removeSemicolonContent,decodeRequestString,getSanitizedPath。

removeSemicolonContent 是把(url未解码前的uri里的;后面的内容给删除)
decodeRequestString把uri进行urldecode编码
getSanitizedPath 是把"//" 替换成 "/"

这是简单对比下shiro的对url的操作顺序:

uri 进行urldecode
uri 删除;后面的内容,包括;

因为shiro的处理和springboot的处理顺序不同,导致我们构造的poc在shiro侧理解的是访问的/test/,/test/我们本身就没有限制权限,放过了这个原本需要认证权限的请求,而springboot侧则是访问的是/test/;name,然后springboot把;name当做一个字符串去寻找对应的路由,返回了对应的字符串。

漏洞总结

此漏洞主要是两个组件之间对某个关键信息处理的逻辑未进行统一约定,可以理解成前后端对同一个信息处理的不同步导致的安全漏洞。同样的认证绕过在shiro历史上出现过好几次,具体可以去实践学习。

原创文章,作者: Admin ,转载请注明出处:https://secvery.com/2328.html