【CVE-2020-1957】shiro搭配spring时身份验证绕过漏洞分析
0x00 漏洞簡介
https://www.openwall.com/lists/oss-security/2020/03/23/2
0x01 漏洞分析
翻查官方commit,在commit?https://github.com/apache/shiro/commit/9762f97926ba99ac0d958e088cae3be8b657948d?中找到相關信息
?大致理解為Spring web在匹配url的時候會容錯后面多余的/,而shiro匹配不上導致繞過,由國人tomsun28提交pull request
0x02 漏洞環境搭建
使用springboot+shiro搭建一個簡單的demo,代碼參考至https://segmentfault.com/a/1190000019440231(使用java原生的整合方式)
其中shiro使用的是1.4.0版本
在shiro-config中配置一個對url "/test/secret"的過濾,此url需要登錄才能訪問
同時在LoginController中配置以下代碼,用于返回一個需要認證的信息
@GetMapping("/test/secret")public String secret(){return "secret";}直接訪問/test/secret,跳轉到登錄頁面
?訪問/test/secret/,返回了secret
官方修復也很簡單就是把url后面的/也考慮進去了再進行匹配
順便一提,使用maven拉取包的時候發現1.5.1版源碼已經修復了,而1.5.0,1.4.2的源碼卻拉取不到
0x03 更新
?shiro的匹配符知識
看freebuf的分析(https://www.freebuf.com/vuls/231909.html),才發現自己看漏了。。。
后續還有一個繞過,具體commit看這里?https://github.com/apache/shiro/commit/3708d7907016bf2fa12691dff6ff0def1249b8ce
由于shiro先獲取的url,然后會判斷分號是否存在,如果存在就會把后面的刪除,進入shiro匹配,匹配不上默認放行,之后Spring web對路徑進行規范化從而訪問到了相應的控制器
比如:
/fdsf;/../test/secret0x04 實際攻擊
當shiroFilter這么寫
與及這么寫
都存在繞過,也就是說當配置在二級目錄下面的身份驗證都存在被繞過的風險
只有這么寫的時候,才不存在問題
總結
以上是生活随笔為你收集整理的【CVE-2020-1957】shiro搭配spring时身份验证绕过漏洞分析的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 1.记住密码 提示框
- 下一篇: Caffe中Interp层的使用