Shiro-550反序列化漏洞

## Shiro-550反序列化漏洞

### 一、前置知识

#### 1.1 Shiro简介        

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

![image-20220621160129969](https://woniumd.oss-cn-hangzhou.aliyuncs.com/security/zhengyu/20220621160137.png)

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:记住用户,无需再次登录

#### 1.2 Shiro服务器端识别身份加解密处理cookie的流程

##### 1.2.1 加密

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

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

3. 若勾选,则将用户身份序列化,并将序列化后的内容进行AES加密,再使用base64编码。
4. 最后将处理好的内容放于cookie中的rememberMe字段。

##### 1.2.2 解密

1. 当服务端收到来自未经身份验证的用户的请求时,会在客户端发送请求中的cookie中获取rememberMe字段内容。
2. 将获取到的rememberMe字段进行base64解码,再使用AES解密。

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

### 二、Shiro-550

#### 2.1 漏洞简介

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

影响版本:shiro <= 1.2.4

特征:

1. cookie中含有rememberMe字段,如:“rememberMe=JV+gEljeMVBj3EFY22otzX......”

2. cookie中含有”rememberMe=delete“

#### 2.2  漏洞分析

##### 2.2.1 环境搭建

Shiro安装包:shiro-root-1.2.4(https://codeload.github.com/apache/shiro/zip/shiro-root-1.2.4)

调试环境:Tomcat 9.0.22 + idea 2022.2 + jdk 1.8 + maven 3.6,需要修改samples-web\pom.xml

```XML
<dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>jstl</artifactId>
    <version>1.2</version>
    <scope>runtime</scope>
</dependency&g

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值