shiro漏洞以及流量分析
绕过漏洞
拦截器
anon:匿名拦截器,不需要登录就能访问,一般用于静态资源,或者移动端接口
authc:登录拦截器,需要登录认证才能访问的资源
全字符匹配,模糊匹配,子目录匹配
限制条件
网站同时使用shiro和spring
shiro满足特定的版本
CVE-2016-6802
shiro版本:shiro < 1.5.0
shiro与spring的URL中末尾的 / 不同导致的权限绕过
shiro拦截器设置authc,访问 /admin 会被拦截,但不会匹配到 /admin/
spring中 /admin 和 /admin/ 的解析资源是一样的,导致绕过
CVE-2020-1957
shiro版本:shiro < 1.5.2
#绕过的payload
/xxx/..;/admin/
shiro处理payload返回 /xxx/.. 校验通过
springboot处理payload返回/admin/
反序列化
shiro550和721的区别
主要区别在于Shiro550使用一直默认密码,只要有足够的密码,不需要rememberMe Cookie
shiro721 ase加密的key为系统随机生成,需要利用登录后的rememberMe去爆破key值。利用有效的rememberMe Cookie作为Padding Oracle Attach的前缀,再去构造反序列化攻击。
shiro > 1.4.2
加密方式变为GCM
流量特征
绕过
GET /xxx/..;/admin/
CVE-2016-4437
请求包Cookie的rememberMe中存在AES+base64加密的一串java反序列化代码
返回包中存在base64加密数据,该数据可作为攻击成功的判定条件