加入收藏 | 设为首页 | 会员中心 | 我要投稿 银川站长网 (https://www.0951zz.com/)- 云通信、基础存储、云上网络、机器学习、视觉智能!
当前位置: 首页 > 服务器 > 安全 > 正文

一文读明白面试官都在问的Shiro漏洞

发布时间:2023-07-10 12:52:00 所属栏目:安全 来源:
导读:shiro-550主要是由shiro的rememberMe内容反序列化导致的命令执行漏洞,造成的原因是默认加密密钥是硬编码在shiro源码中,任何有权访问源代码的人都可以知道默认加密密钥。于是攻击者可以创建一个恶意对象,对其进行序

shiro-550主要是由shiro的rememberMe内容反序列化导致的命令执行漏洞,造成的原因是默认加密密钥是硬编码在shiro源码中,任何有权访问源代码的人都可以知道默认加密密钥。于是攻击者可以创建一个恶意对象,对其进行序列化、编码,然后将其作为cookie的rememberMe字段内容发送,Shiro 将对其解码和反序列化,导致服务器运行一些恶意代码。

一、Shiro简介

Apache Shiro 是一个强大易用的 Java 安全框架,提供了认证、授权、加密和会话管理等功能,对于任何一个应用程序,Shiro 都可以提供全面的安全管理服务。

在Apache Shiro<=1.2.4版本中AES加密时采用的key是硬编码在代码中的,于是我们就可以构造RememberMe的值,然后让其反序列化执行。

Primary Cocnerns(基本关注点):

Authentication(认证):经常和登录挂钩,是证明用户说他们是谁的一个工作

Authorization(授权):访问控制的过程,即,决定‘谁’可以访问‘什么

Session Management(会话管理):管理用户特定的会话,即使在非web或是EJB的应用中

Crytography(加密):通过加密算法保证数据的安全,且易于使用

Supporting Features(辅助特性):

Web Support(网络支持):web support API可以帮助在web应用中方便的使用shiro

Caching(缓存):保证安全操作使用快速有效

Concurrency(并发):支持多线程应用

Testing(测试):支持集成单元测试

Run As(以..运行):可以假定用户为另一个用户

Remeber Me:记住用户,无需再次登录

二、Shiro服务器识别身份加解密处理的流程

1、加密

用户使用账号密码进行登录,并勾选”Remember Me“。

Shiro验证用户登录信息,通过后,查看用户是否勾选了”Remember Me“。

若勾选,则将用户身份序列化,并将序列化后的内容进行AES加密,再使用base64编码。

最后将处理好的内容放于cookie中的rememberMe字段。

2、解密

当服务端收到来自未经身份验证的用户的请求时,会在客户端发送请求中的cookie中获取rememberMe字段内容。

将获取到的rememberMe字段进行base64解码,再使用AES解密。

最后将解密的内容进行反序列化,获取到用户身份。

(编辑:银川站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!