3.9K Star 18.4K Fork 5.3K

卓源软件 / JeeSite 4.x and 5.x

 / 详情

star shiro可枚举漏洞

已完成
创建于  
2021-07-26 09:16

该问题是怎么引起的?

发现 key 的值为
r0e3c16IdVkouZgk1TKVMg==
发现 mode 的值为
cbc
发现 origin_count 的值为
1
发现 cookie_name 的值为
rememberMe
发现 current_count 的值为
0
解决方案也告知我了,如下
升级 shiro 到 1.2.5 及以上版本。
如果在配置里配置了密钥,那么请一定不要使用网上的密钥,通过自己 base64 一个 AES 的密钥,或者利用官方提供的方法生成密钥:
org.apache.shiro.crypto.AbstractSymmetricCipherService#generateNewKey()

上次您给我的解决方案

/**
 * Copyright (c) 2013-Now http://jeesite.com All rights reserved.
 */
package com.jeesite.test;

import org.apache.shiro.crypto.AesCipherService;

/**
 * v4.1.8 开始将不为记住我功能,设置默认密钥,即启动系统时生成新密钥。
 * 这样会造成一个问题,比如:重启服务后,记住登录的用户因为解密失败,而需要重新登录。
 * 为了解决这个问题,您可以通过这个类获取一个新密钥,设置到 shiro.rememberMe.secretKey 中即可。
 * 另外,如果你从配置文件里将 shiro.rememberMe.secretKey 设置为空,启动系统时也会自动设置一个新的密钥。
 * @author ThinkGem
 * @version 2019年11月6日
 */
public class RememberMeKeyGen {

	public static void main(String[] args) {
		byte[] cipherKey = new AesCipherService().generateNewKey().getEncoded();
		String secretKey = org.apache.shiro.codec.Base64.encodeToString(cipherKey);
		System.out.println("shiro.rememberMe.secretKey = " + secretKey);
	}
	
}

shiro.rememberMe.secretKey 这参数适应于 v4 所有版本,yml没有的话,加进去就行;你也可以关闭这个功能,在 ShiroConfig 里找到 securityManager,加一行代码 bean.setRememberMeManager(null);



### 通过您的解决方案我去解决问题中发现

1、首先我的jeesite版本是4.0.5的,yml文件里并没有shiro.rememberMe.secretKey这个配置,
只有sso.secretKey和loginSubmit.secretKey这两个配置
2、其次您给出的解决方案 在 ShiroConfig 里找到 securityManager,加一行代码 bean.setRememberMeManager(null);
所以我找到了shiroconfig这个类,发现bean.setRememberMeManager(null)这样设置会报错
输入图片说明

 **麻烦问一下,这边还可以如何解决啊** 

评论 (1)

戴勇 创建了任务
戴勇 关联仓库设置为卓源软件/JeeSite 4.3
戴勇 修改了描述
戴勇 修改了描述
戴勇 修改了描述
展开全部操作日志

升级 shiro 1.8.0 详情: c310fbd

卓源软件 任务状态待办的 修改为已完成

登录 后才可以发表评论

状态
负责人
里程碑
Pull Requests
关联的 Pull Requests 被合并后可能会关闭此 issue
分支
开始日期   -   截止日期
-
置顶选项
优先级
参与者(2)
6732 thinkgem 1651893329
Java
1
https://gitee.com/thinkgem/jeesite4.git
git@gitee.com:thinkgem/jeesite4.git
thinkgem
jeesite4
JeeSite 4.x and 5.x

搜索帮助