Java常见漏洞

kenton 发布于 25 天前 34 次阅读


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字段解析过程:

防御:

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

----------------------------------------------时间线:2025/4/1--------------------------------------------------

此作者没有提供个人介绍
最后更新于 2025-04-01