今天登录服务器上面提示有漏洞提示:Apache Shiro 默认密钥致命令执行漏洞(CVE-2016-4437)【远程扫描】,接下来为大家介绍一下Apache Shiro 默认密钥致命令执行漏洞的修复方法,有需要的小伙伴可以参考一下
1、 漏洞描述:
Apache Shiro 是ASF旗下的一款开源软件,它提供了一个强大而灵活的安全框架,提供身份验证、授权、密码学和会话管理。在Apache Shiro部分旧版本中,加密的用户信息序列化后存储在名为remember-me的Cookie中,攻击者可以使用Shiro的默认密钥伪造用户Cookie,触发Java反序列化漏洞,进而在目标机器上执行任意命令。
2、漏洞特征:
远程代码执行
只要rememberMe的AES加密密钥泄露,无论shiro是什么版本都会导致反序列化漏洞。
3、修复建议:
(1)、升级shiro至最新版本1.7.0并生成新的密钥替换。
(2)、使用官方秘钥生成方法:org.apache.shiro.crypto.AbstractSymmetricCipherService#generateNewKey()
(3)、验证方法:Apache Shiro 默认密钥致命令执行漏洞验证工具
备注:若在配置里配置了默认密钥,则立即修改,并妥善保管该密钥。
4、修复过程
针对此次shiro版本升级过程中主要分为jar包升级和修复RemberMe功能,如果网站在登录过程中设置了RemberMe的相关功能,需要针对秘钥生成方式和秘钥进行修改,如未使用到RemberMe的相关功能,则只需要更新项目的相关jar包即可
JAR包升级
<!--shiro核心包-->
<dependency>
<groupId>org.apache.shiro</groupId>
<artifactId>shiro-core</artifactId>
<version>1.7.0</version>
</dependency>
<!--shiro整合web-->
<dependency>
<groupId>org.apache.shiro</groupId>
<artifactId>shiro-web</artifactId>
<version>1.7.0</version>
</dependency>
<!--shiro整合Spring-->
<dependency>
<groupId>org.apache.shiro</groupId>
<artifactId>shiro-spring</artifactId>
<version>1.7.0</version>
</dependency>
<!--升级shiro1.2.4及以上版本 需要单独引入encoder-->
<dependency>
<groupId>org.owasp.encoder</groupId>
<artifactId>encoder</artifactId>
<version>1.2.3</version>
</dependency>
修复RemberMe功能
因项目未涉及到记住我相关功能,详情建议参考:https://www.cnblogs.com/loong-hon/p/10619616.html