主要区别
- Shiro550的默认密钥构造恶意的序列化对象,进行编码来伪造用户的Cookie,服务端反序列化时触发漏洞,执行命令
- Shiro721的AES加密的key基本上猜不到,由系统随机生成,需要登陆后rememberMe去爆破正确的key,也就是利用有效的rememberMe Cookie值来实现反序列化漏洞的攻击,难度相对较高
版本问题
- Shiro1.2.4之前登录时默认是先验证“rememberMe”的值,而不是先进行身份认证,这也是Shiro550漏洞能够利用的原因之一,可以利用伪造rememberMe来绕过身份验证,从而实现未授权访问
- Shiro1.2.4之后的登录是先进行身份验证,而不是先验证“rememberMe” 所以用户需要知道受害者已经通过登录的验证,并且Shiro框架已经为受害者创建了一个有效的会话,以便攻击者可以利用该会话ID进行身份伪造并绕过Shiro框架的权限控制机制
- Shiro框架的登录流程也是可以自定义的
shiro一般利用方式
Apache Shiro框架进行登录,服务端在接收cookie时,会经过下面的流程:
1、检索RememberMe Cookie的值
2、Base64解码
3、AES解密(加密密钥硬编码)
4、进行反序列化操作(未过滤处理)
5、攻击者可以使用Shiro的默认密钥构造恶意序列化对象进行编码来伪造用户的Cookie,服务端反序列化时触发漏洞,从而执行命令。