Shiro框架以及反序列化漏洞

目录

一.Shiro是什么?

二.原理

三.Shiro识别身份的时候的工作流程和存在的漏洞点

1.获取rememberMe cookie

2.base64解密

3.AES解密

4.反序列化

四.利用条件

五.如何判断是不是shiro框架

六.获取key值,利用链

七.总结:


一.Shiro是什么?

(1)Apache Shiro是一个强大且易用的Java安全框架,执行身份验证、授权、密码 和会话管理。

比如说这里有登录口,你登陆的时候是不是需要鉴权,有大佬就写了专门鉴权的代码,封装成框架,便于开发,Apache Shiro就是之一。

(2)什么东西能够用来鉴权——cookie字段。

shiro直接就将cookie进行了反序列化,是因为其前端只能以数据或者字符串的形式传输,后台为了判断,通过对象里面的字段进行鉴别。在传输前,会对cookie进行加密,传过来之后解密,在反序列化。

二.原理

        AES加密的密钥key存在于代码中,用户可以爆破获取密钥。攻击可以构造一个恶意的对象,进行序列化,用AES的密钥进行加密,用base64编码。通过修改remeber me字段,发送给服务器,服务器中shiro框架由于没有对这个字段进行过滤,导致解码过程,直接解析了这段恶意的对象,造成反序列化漏洞。(你可以先看完第三模块在看这个原理

三.Shiro识别身份的时候的工作流程和存在的漏洞点

1.获取rememberMe cookie

后台拿到这个cookie字段,header头里面有很多属性,其中rememberMe属性,就是为鉴权的反序列化字符串。

使用了cookieRmemberMeManager类来获取rememberme的cookie值, 然后使用getRmemberedSerializedIdentity()方法来对该值进行解密

2.base64解密

使用了cookieRmemberMeManager类来获取rememberme的cookie值, 然后使用getRmemberedSerializedIdentity()方法来对该值进行解密

3.AES解密

在AbstractRememberMeManager类中有如图所示的decrypt方法,该方法可以对传入的值进 行AES解密,然后返回serialiezd值,该解密需要一个key值(漏洞点就是这个),也就是常说的shiro的key值, 由于AES是对称加解密,所以前端传值的时候会将该key值在rememberme的cookie中 传输,然后后台通过该key值来进行解密。

4.反序列化

第一步登录成功,前往服务器。

第二步,服务器对cookie序列化,在AES加密,在BASE64编码,最后传输给浏览器,让浏览器保存。 

1.当登录之后,请求资源,通过remeberme功能块带着cookie前往服务器。

2.服务器经过一些列解码,反序列化,进行身份鉴别。

了解到这个过程之后 ,remeberme这里肯定是不能作为漏洞点的,AES加密(对称加密——密钥key),使用了默认的key或者是不变的key,存在在代码里面,这就是漏洞点。1.2.4

四.利用条件

1.使用shiro框架嘛。

2.知道shiro框架里面的key值。

3.存在利用链(可以调用执行命令的函数)。(没有利用链,就算存在漏洞,也无法利用,因为你无法调用)

五.如何判断是不是shiro框架

抓取一个请求包,然后在请求包中的cookie值中添加;rememberMe=1,然后发送,如果返回包中有rememberMe=deleteMe字样,那么就存在shiro框架。

六.获取key值,利用链

一般key是通过工具爆破出来的,所以这里就需要工具了,比如飞鸿的 ShiroExploit.V2.5工具

七.总结

1.Shiro版本< 1.2.5:没有为“remember me”功能配置密钥,允许远程攻击者执行任意代码或通过请求参数绕过预期的访问限制。1.2.5及后续的版本,都是随机产生的密钥。

Shiro反序列化检测是指对Shiro框架可能存在的反序列化漏洞进行检测和防护的一种安全措施。通过该方法,可以防止黑客利用Shiro框架反序列化漏洞进行攻击。 ShiroJava领域中广泛使用的开源安全框架,用于认证、授权和会话管理等安全功能。然而,由于Java的序列化和反序列化机制的特性,可能导致应用程序在反序列化时存在安全风险。黑客可以通过构造恶意序列化数据,导致应用程序反序列化时执行恶意代码,从而实施攻击,比如远程代码执行、命令注入等。 为了防止这种安全风险,可以在Shiro框架中添加反序列化检测机制。这个机制可以对反序列化的数据进行检查,确保其合法性,并防止执行恶意代码。常见的防护方法包括: 1. 设置白名单:限制反序列化的类的类型和来源,只允许反序列化特定的类。 2. 安全配置:对Shiro框架及相关功能进行正确的安全配置,合理设置权限和角色。 3. 使用SafeXMLDecoder:SafeXMLDecoder是一个安全的XML反序列化工具,可以对输入数据进行验证和过滤,阻止恶意代码的执行。 此外,定期更新Shiro框架和依赖库,确保及时获取最新的安全补丁也是非常重要的。同时,开发人员也需要对Shiro框架反序列化漏洞有一定的了解,及时关注相关安全动态,以便及时修复和更新。 总之,Shiro反序列化检测是一项重要的安全措施,可以有效预防黑客利用反序列化漏洞Shiro框架进行攻击。通过合理的安全配置和验证机制,可以提高应用程序的安全性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值