【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、引用新生成的密钥

以上两步即可搞定。

完结!


相关文章
|
5月前
|
数据采集 分布式计算 Hadoop
开源数据质量解决方案——Apache Griffin入门宝典(上)
开源数据质量解决方案——Apache Griffin入门宝典
168 0
|
1月前
|
Shell Linux 网络安全
【Shell 命令集合 网络通讯 】Linux 管理Apache HTTP服务器 httpd命令 使用指南
【Shell 命令集合 网络通讯 】Linux 管理Apache HTTP服务器 httpd命令 使用指南
30 0
|
1月前
|
Shell Linux Apache
【Shell 命令集合 网络通讯 】Linux 管理Apache HTTP服务器 apachectl命令 使用教程
【Shell 命令集合 网络通讯 】Linux 管理Apache HTTP服务器 apachectl命令 使用教程
162 1
|
1月前
|
存储 分布式计算 Hadoop
Apache Hudi:云数据湖解决方案
Apache Hudi:云数据湖解决方案
15 0
|
7月前
|
安全 应用服务中间件 Apache
Apache-Tomcat-Ajp文件读取漏洞(CVE-2020-1938、CNVD-2020-10487)
Apache-Tomcat-Ajp文件读取漏洞产生原因是由于Tomcat默认开启的AJP服务(8009端口)存在一处文件包含缺陷,攻击者可构造恶意的请求包进行文件包含操作,进而读取受影响Tomcat服务器上的Web目录文件
278 1
|
7月前
|
安全 Java Shell
Apache Log4j2 远程代码执行漏洞
Apache Log4j2是一个·基于Java的日志记录工具,该工具重写了Log4j框架,并且引入大量丰富的特性,该日志框架被大量用于业务系统开发,用来记录日志信息。
59 2
|
7月前
|
SQL 安全 数据可视化
Apache Superset 未授权访问漏洞(CVE-2023-27524)
Apache Superset 存在未授权访问漏洞,攻击者可利用该漏洞验证和访问未经授权的资源。
141 1
|
7月前
|
XML Java Apache
Apache Maven:从构建到部署,一站式解决方案
Apache Maven:从构建到部署,一站式解决方案
163 0
|
8月前
|
安全 druid Java
【紧急】Apache Log4j任意代码执行漏洞安全风险升级修复教程
近期一个 Apache Log4j 远程代码执行漏洞细节被公开,攻击者利用漏洞可以远程执行代码。经过分析,该组件存在Java JNDI注入漏洞,当程序将用户输入的数据进行日志,即可触发此漏洞,成功利用此漏洞可以在目标服务器上执行任意代码。
209 1
|
9月前
|
缓存 Apache
执行命令安装Apache及其扩展包时报错
执行命令安装Apache及其扩展包时报错
197 1

热门文章

最新文章

推荐镜像

更多