资讯专栏INFORMATION COLUMN

Apache Shiro RememberMe 命令执行漏洞修复

IT那活儿 / 1866人阅读
Apache Shiro RememberMe 命令执行漏洞修复

点击上方“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那活儿”公众号

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/129152.html

相关文章

  • 基于shiro框架实现自动登录(rememberMe)

    摘要:关于的自动对用户对象序列化并加密当获得请求时能够获取反序列化且解密之后的用户对象。 shirorememberMe流程原理研究 输入用户密码正儿八经登录时, 如果勾选了记住我, 则后台给shiro设置rememberme showImg(https://segmentfault.com/img/remote/1460000012800157); 前一次登录勾选了记住我, 则本次登录时...

    gghyoo 评论0 收藏0
  • 不用 Spring Security 可否?试试这个小而美的安全框架

    摘要:写在前面在一款应用的整个生命周期,我们都会谈及该应用的数据安全问题。用户的合法性与数据的可见性是数据安全中非常重要的一部分。 写在前面 在一款应用的整个生命周期,我们都会谈及该应用的数据安全问题。用户的合法性与数据的可见性是数据安全中非常重要的一部分。但是,一方面,不同的应用对于数据的合法性和可见性要求的维度与粒度都有所区别;另一方面,以当前微服务、多服务的架构方式,如何共享Sessi...

    toddmark 评论0 收藏0

发表评论

0条评论

IT那活儿

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<