【Shiro】Apache Shiro 默认密钥致命令执行漏洞(CVE-2016-4437)的解决方案

简介: 【Shiro】Apache Shiro 默认密钥致命令执行漏洞(CVE-2016-4437)的解决方案

今天收到运维人员的反馈,说程序有漏洞,如下图:

一、项目描述

项目技术栈:Spring Boot(2.0.1) + shiro(1.6.0) + mybatis(3.4.1)

二、漏洞详情

Apache Shiro是一个强大易用的Java安全框架,提供了认证、授权、加密和会话管理等功能。攻击者可以使用Shiro的默认密钥伪造用户Cookie,触发Java反序列化漏洞,进而在目标机器上执行任意命令。

阿里云先知里有这个漏洞相关的详情,可点击漏洞详情查看。

以下是详情简要概括:Apache Shiro 是ASF旗下的一款开源软件,它提供了一个强大而灵活的安全框架,提供身份验证、授权、密码和会话管理。在Apache Shiro部分旧版本中,加密的用户信息序列化后存储在名为remember-me的Cookie中,攻击者可以使用Shiro的默认密钥伪造用户Cookie,触发Java反序列化漏洞,进而在目标机器上执行任意命令。

查看自己的代码,果然发现了这一处漏洞:

三、解决方案

修复建议:升级shiro至最新版本1.7.0并生成新的密钥替换,注意妥善保管密钥。

利用官方提供的方法生成密钥:org.apache.shiro.crypto.AbstractSymmetricCipherService#generateNewKey(int),替换key修复指南:如以下内容!

步骤1、新创建一个秘钥生成器

package com.iot.mainsite.component.shiro;
import lombok.extern.slf4j.Slf4j;
import org.springframework.context.annotation.Bean;
import javax.crypto.KeyGenerator;
import javax.crypto.SecretKey;
import java.security.NoSuchAlgorithmException;
/**
 * <p>GenerateCipherKey 此类用于:</p>
 * <p>@author:hujm</p>
 * <p>@date:2021年12月07日 19:02</p>
 * <p>@remark:</p>
 */
@Slf4j
public class GenerateCipherKey {
    /**
     * 随机生成秘钥,参考org.apache.shiro.crypto.AbstractSymmetricCipherService#generateNewKey(int)
     *
     * @return 随机生成秘钥
     */
    @Bean
    public static byte[] generateNewKey() {
        KeyGenerator keyGenerator;
        try {
            keyGenerator = KeyGenerator.getInstance("AES");
        } catch (NoSuchAlgorithmException e) {
            String msg = "Unable to acquire AES algorithm. This is required to function.";
            throw new IllegalStateException(msg, e);
        }
        keyGenerator.init(128);
        SecretKey secretKey = keyGenerator.generateKey();
        byte[] encoded = secretKey.getEncoded();
        log.info("生成随机秘钥成功!");
        return encoded;
    }
}

步骤2、引用新生成的密钥

以上两步即可搞定。

完结!


相关文章
|
10月前
|
数据采集 分布式计算 Hadoop
开源数据质量解决方案——Apache Griffin入门宝典(上)
开源数据质量解决方案——Apache Griffin入门宝典
396 0
|
3月前
|
存储 SQL BI
毫秒级查询性能优化实践!基于阿里云数据库 SelectDB 版内核:Apache Doris 在极越汽车数字化运营和营销方向的解决方案
毫秒级查询性能优化实践!基于阿里云数据库 SelectDB 版内核:Apache Doris 在极越汽车数字化运营和营销方向的解决方案
毫秒级查询性能优化实践!基于阿里云数据库 SelectDB 版内核:Apache Doris 在极越汽车数字化运营和营销方向的解决方案
|
30天前
|
安全 Java 网络安全
Apache Shiro 1.6.0 逻辑(CVE-2013-2134)
Apache Shiro 1.6.0 逻辑(CVE-2013-2134)
|
4月前
|
存储 运维 5G
基于阿里云数据库 SelectDB 内核 Apache Doris 的实时/离线一体化架构,赋能中国联通 5G 全连接工厂解决方案
数据是 5G 全连接工厂的核心要素,为支持全方位的数据收集、存储、分析等工作的高效进行,联通 5G 全连接工厂从典型的 Lambda 架构演进为 All in [Apache Doris](https://c.d4t.cn/vwDf8R) 的实时/离线一体化架构,并凭借 Doris 联邦查询能力打造统一查询网关,数据处理及查询链路大幅简化,为联通 5G 全连接工厂带来数据时效性、查询响应、存储成本、开发效率全方位的提升。
基于阿里云数据库 SelectDB 内核 Apache Doris 的实时/离线一体化架构,赋能中国联通 5G 全连接工厂解决方案
|
2月前
|
安全 Java Apache
如何安装与使用Spring Boot 2.2.x、Spring Framework 5.2.x与Apache Shiro 1.7进行高效开发
【7月更文第1天】在现代Java Web开发领域,Spring Boot以其简化配置、快速开发的特点备受青睐。结合Spring Framework的成熟与Apache Shiro的强大权限控制能力,我们可以轻松构建安全且高效的Web应用。本篇文章将指导你如何安装并使用Spring Boot 2.2.x、Spring Framework 5.2.x以及Apache Shiro 1.7来构建一个具备基础权限管理功能的项目。
60 0
|
12月前
|
安全 应用服务中间件 Apache
Apache-Tomcat-Ajp文件读取漏洞(CVE-2020-1938、CNVD-2020-10487)
Apache-Tomcat-Ajp文件读取漏洞产生原因是由于Tomcat默认开启的AJP服务(8009端口)存在一处文件包含缺陷,攻击者可构造恶意的请求包进行文件包含操作,进而读取受影响Tomcat服务器上的Web目录文件
589 1
|
4月前
|
Shell Linux Apache
【Shell 命令集合 网络通讯 】Linux 管理Apache HTTP服务器 apachectl命令 使用教程
【Shell 命令集合 网络通讯 】Linux 管理Apache HTTP服务器 apachectl命令 使用教程
198 1
|
4月前
|
Shell Linux 网络安全
【Shell 命令集合 网络通讯 】Linux 管理Apache HTTP服务器 httpd命令 使用指南
【Shell 命令集合 网络通讯 】Linux 管理Apache HTTP服务器 httpd命令 使用指南
70 0
|
4月前
|
存储 分布式计算 Hadoop
Apache Hudi:云数据湖解决方案
Apache Hudi:云数据湖解决方案
87 0
|
12月前
|
安全 Java Shell
Apache Log4j2 远程代码执行漏洞
Apache Log4j2是一个·基于Java的日志记录工具,该工具重写了Log4j框架,并且引入大量丰富的特性,该日志框架被大量用于业务系统开发,用来记录日志信息。
86 2