防护手段: 1. 直接发现cookie中有rememberMe字段值时,直接认定为攻击。 2. 通过检测rememberMe值的长度来判断是否是攻击,这个长度按实际正常请求值的长度来设置。 3. 先将rememberMe的值进
1. 直接发现cookie中有rememberMe字段值时,直接认定为攻击。
2. 通过检测rememberMe值的长度来判断是否是攻击,这个长度按实际正常请求值的长度来设置。
3. 先将rememberMe的值进行一系列解码(base64--AES),再根据解码得到的数据来判断数据特征,通过看数据是不是常见攻击的特征来判断。
绕过方法:第一种情况:我们可以在rememberMe中加回车符 /r 来绕过。Tomcat 9.0.19环境下可以。
第二种情况:那就只能修改payload的长度来绕过了
第三种情况:shiro在进行base64解码时,会先判断字符串中是否有非base64的字符,如果有,会丢弃非base64的字符。确保剩下的字符都是base64格式的,再解码。
我们在rememberMe的值中添加一些非base64编码的字符,就可以干扰安全产品对rememberMe的处理,从而绕过防护。也要确保我们插入的字符能被中间件正常解析。
如:!、#、$、%、&、’、(、)、.、[、]、\xeb、\xec、\xed、\xee、\xef、\xf0、\xf1等等。
其他绕过方法:修改数据包的请求方法。这种能够利用成功就是安全产品只对常见的请求方法进行了防护。
http://changxia3.com/2022/05/09/Shiro%E5%8F%8D%E5%BA%8F%E5%88%97%E5%8C%96%E6%BC%8F%E6%B4%9E%E7%AC%94%E8%AE%B0%E4%BA%94%EF%BC%88%E5%AF%B9%E6%8A%97%E7%AF%87%EF%BC%89/