Shiro反序列化漏洞汇总
Apache Shiro是一个强大易用的Java安全框架,提供了认证、授权、加密和会话管理等功能。Shiro框架直观、易用,同时也能提供健壮的安全性。
一、Shiro rememberMe反序列化漏洞(Shiro-550)
漏洞原理:
由于Apache shrio框架提供了记住密码的功能,(Remember Me),用户登陆成功后会生产经过加密并编码的cookie。在服务端对于RememberMe的cookie值,
先base64解码------>AES解密------>反序列化
导致反序列化RCE漏洞
Payload产生过程:
RCE命令-->序列化-->AES加密-->base64编码-->RemerberMe Cookie 值
在整个漏洞利用过程中,比较重要的是AES加密的密钥,如果没有修改默认的密钥那么就很容易就知道密钥了,Payload构造起来也是十分的简单。
影响版本:Apache Shiro < 1.2.4
漏洞特征判断:返回报文包中包含set cookie 字段为 RememberMe=deleteMe
漏洞利用方式:
1、反弹shell
2、写入文件到服务器目录下
二、Shiro Padding Oracle Attack(Shiro-721)
利用条件:知道已经登陆用户的合法cookie且目标服务器含有可利用的攻击链就可以进行漏洞利用。
原理:
shiro721用到的是AES-CBC加密,其中的密钥就很难猜到了,是系统随机生成的,而cookie解析过程与shiro550相同,所以通过构造恶意的RememberMe字段的值且目标含有可利用的攻击链的话可以进行RCE。
即通过 Padding Oracle Aattack实现破解AES-CBC的加密过程,从而实现RememberMe的伪造。
RememberMe字段解析过程:

防御:
- 由于这种方法需要爆破得到key,因此可以对短时间内多次访问的ip进行禁止访问操作,达到防御目的。
- 升级至安全版本。
- 关闭rememberMe持久化登录功能。
----------------------------------------------时间线:2025/4/1--------------------------------------------------
Comments NOTHING