暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Apache Shiro RememberMe 命令执行漏洞修复

IT那活儿 2022-11-28
3832

点击上方“IT那活儿”公众号,关注后了解更多内容,不管IT什么活儿,干就完了!!!


背 景

Apache Shiro是用户执行认证、授权、加密和会话管理的Java安全框架。Apache Shiro<=1.2.4存在Java反序列化漏洞。远程攻击者通过构造的请求,利用此漏洞远程执行任意代码。

本地某系统使用了Apache Shiro,Shiro 提供了记住我(RememberMe)的功能,下次访问时无需再登录即可访问。系统将密钥硬编码在代码里,且在官方文档中并没有强调修改该密钥,导致使用者大多数都使用了默认密钥。

攻击者可以构造一个恶意的对象,并且对其序列化、AES加密、base64编码后,作为cookie的rememberMe字段发送。Shiro将rememberMe进行解密并且反序列化,最终造成反序列化漏洞,进而在目标机器上执行任意命令。


漏洞修复

检查Shiro配置文件ShiroConfig.java 是否包含上面提到的默认秘钥 fCq+/xW488hMTCD+cmJ3aQ==,如果是使用的默认密钥则需要修改,防止被执行命令攻击。
解决方案:
  1. 升级Shiro到最新 1.9.1版本;
  2. 重新生成一个新的秘钥,保证唯一且不要泄漏。
// 直接拷贝到main运行即可生成一个Base64唯一字符串。
KeyGenerator keygen = KeyGenerator.getInstance("AES");
SecretKey deskey = keygen.generateKey();
System.out.println(Base64.encodeToString(deskey.getEncoded()));

替换掉cipherKey的默认秘钥。


本文作者:孙涛涛(上海新炬王翦团队)

本文来源:“IT那活儿”公众号

文章转载自IT那活儿,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论