ShiroRememberMe反序列化漏洞
Apache Shiro 反序列化漏洞
1)、Apache Shiro框架提供了记住我的功能(RememberMe),⽤户登陆成功后会⽣成经过加密并编码的cookie。cookie的key为RememberMe,cookie的值是经过对相关信息进⾏序列化,然后使⽤aes加密,最后在使⽤base64编码处理形成的。
在服务端接收cookie值时,按照如下步骤来解析处理:
1、检索RememberMe cookie 的值
2、Base 64解码
3、使⽤AES解密(加密密钥硬编码)
4、进⾏反序列化操作(未作过滤处理)
在调⽤反序列化时未进⾏任何过滤,导致可以触发远程代码执⾏漏洞。
shiro安全框架意思就是说shiro默认使⽤了CookieRememberMeManager,其处理cookie的流程是:得到rememberMe
的cookie值>>>Base64解码>>>AES解密>>>反序列化。然⽽AES的密钥是硬编码的,就导致了攻击者可以构造恶意数据造成反序列化的RCE漏洞。
2)、Apache Shiro 使⽤公开 AES 秘钥加密传输 使⽤默认 AES 秘钥的服务器容易遭受反序列化攻击,攻击者能在服务端执⾏任意代码。 Apache Shiro 在 1.2.4 之前版本中使⽤ AES 硬编码秘 钥,存在严重的反序列化漏洞,攻击者可以在远程主机上执⾏任意指令 ,建议 检查 Shiro 版本信息,若 <=1.2.4请升级⾄ 1.2.5 及以上版本 。
3)、也可以⾃定义key替换默认的来避免,⽣成key代码如下
//密钥⽣成java代码(直接拷贝到main允许即可)
KeyGenerator keygen = Instance("AES");
SecretKey deskey = ateKey();
System.out.Encoded()));
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论