Apache Shiro Java反序列化漏洞记录

最近工作上刚好碰到了这个漏洞,当时的漏洞扫描出来后一直升级shiro也没效果,最后才发现是,shiro的rememberMe功能的AES密钥一旦泄露,就会导致反序列化漏洞。

而无论是否升级shiro到最新版本还是什么,ShiroConfig类里面的rememberMe管理器如果没有做修改大部分都是一样的代码,所以很容易就会被攻击到。

  /**
     * rememberMe管理器, cipherKey生成见{@code Base64Test.java}
     */
    @Bean
    public CookieRememberMeManager rememberMeManager(SimpleCookie rememberMeCookie) {
        CookieRememberMeManager manager = new CookieRememberMeManager();
        manager.setCipherKey(Base64.decode("Z3VucwAAAAAAAAAAAAAAAA=="));
        manager.setCookie(rememberMeCookie);
        return manager;
    }

最后自己将key设置成动态的,避免了过于简单而被攻击。


    /**
     * rememberMe管理器, cipherKey生成见{@code Base64Test.java}
     */
    @Bean
    public CookieRememberMeManager rememberMeManager(SimpleCookie rememberMeCookie) {
        CookieRememberMeManager manager = new CookieRememberMeManager();
        String md5 = getMD5Str(System.currentTimeMillis()+"");
        manager.setCipherKey(Base64.decode(md5));
        manager.setCookie(rememberMeCookie);
        return manager;
    }
    public static String getMD5Str(String strValue) {
        String newStr ="";
        try {
            MessageDigest md5 = MessageDigest.getInstance("MD5");
            newStr = Base64.encodeToString(md5.digest(strValue.getBytes()));
        } catch (Exception e) {
            return "LzAsTQiJccTVaXNM4DeJqs==";
        }
        return newStr;
    }

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值