shiro 框架目前只有两个利用,一个是550,一个是721。 其中550 是最容易利用的,不需要登录就可以利用;721 是需要登录去爆破它的密钥的,所以它的利用条件比较苛刻
shiro-550
shiro反序列化漏洞利用有两个关键点,首先是在shiro<1.24时,AES加密的密钥Key被硬编码在代码里,只要能获取到这个key就可以构造恶意数据让shiro识别为正常数据。另外就是shiro在验证rememberMe时使用了readObject方法。
readObject用来执行反序列化后需要执行的代码片段,从而造成恶意命令可以被执行。攻击者构造恶意代码,并且序列化,AES加密,base64编码后,作为cookie的rememberMe字段发送。Shiro将rememberMe进行编码,解密并且反序列化,最终造成反序列化漏洞。
shiro-721
不需要key,利用Padding Oracle Attack构造出RememberMe字段后段的值结合合法的Remember。