Shiro反序列化550漏洞复现

介绍

Shiro 是一个强大且易于使用的 Java 安全框架,用于身份验证、授权和会话管理等功能。它提供了一套灵活的基于角色的访问控制(RBAC)机制,可以轻松地集成到现有的 Java 应用程序中。

影响版本

Apache Shiro < 1.2.4

原理

shiro默认使用了Cookie RememberMe Manager,其处理cookie的流程是:得到rememberMe的cookie值–>Base64解码–>AES解密–>反序列化 然而AES的密钥是硬编码的,就导致了攻击者可以构造恶意数据造成反序列化的RCE漏洞。

shiro的身份认证工作流程

  1. 通过前端传入的值,
  2. 获取rememberMe cookie
  3. base64加密
  4. AES加密 (对称加解密)
  5. 反序列化

环境搭建

shiro_attack-4.5.3的jar包

链接:https://pan.baidu.com/s/1td87XMr-GspJCHl6vpCFnw 
提取码:i19d

 更新源

 安装容器

安装靶场

启动靶场

 docker run -d -p 80:8080 medicean/vulapps:s_shiro_1

     run   启动

     -d    后台启动

     -p    端口映射  真实机端口:docker端口

查看端口,如果链接超时,就关闭防火墙,具体内容大家自己分析。

 访问服务器80端口

 输入账密登录

 抓包

 这里使用shiro_attack jar包

 

 命令执行

生成内存马

连接成功

 tips:只要rememberMe的AES加密密钥泄漏,无论shiro什么版本都会导致反序列化漏洞。

防御手法:

反序列化漏洞是一种安全漏洞,攻击者可以利用恶意序列化数据来执行任意代码,从而获取系统权限或对系统进行攻击。这种漏洞可能存在于应用程序中使用的任何支持反序列化的组件中,而与 Shiro 框架本身无直接关系。

为了防止反序列化漏洞的利用,以下是一些推荐的做法:

1、更新和使用受信任的组件:确保使用的第三方库和组件是最新的版本,并且来自可信的来源,这有助于减少已知的反序列化漏洞。

  1. 删除代码里的默认密钥

  2. 升级shiro到1.2.5及以上

2、验证和控制反序列化输入:在反序列化过程中,要验证和控制输入数据的合法性和完整性,避免接受未信任的、来自不可信来源的序列化数据。

3、实施安全策略:实施严格的访问控制策略,限制对敏感对象和操作的访问,以减少潜在的攻击面。

4、审查和审计代码:定期进行代码审查和安全审计,以识别和修复可能存在的漏洞。

Shiro 550与721漏洞的区别


1、这两个漏洞主要区别在于Shiro550使用已知密钥碰撞,只要有足够密钥库(条件较低),不需要Remember Cookie

2、Shiro721的ase加密的key基本猜不到,系统随机生成,可使用登录后rememberMe去爆破正确的key值,即利用有效的RememberMe Cookie作为Padding Oracle Attack的前缀,然后精心构造 RememberMe Cookie 值来实现反序列化漏洞攻击,难度高

版本问题
1、Shiro框架1.2.4版本之前的登录时默认是先验证"rememberMe" Cookie的值,而不是先进行身份验证,这也是Shiro550漏洞能够利用的原因之一,攻击者可以利用该漏洞通过伪造"rememberMe" Cookie的值来绕过Shiro框架的身份认证机制,从而实现未授权访问

2、Shiro框架1.2.4版本之后的登录时先进行身份验证,而不是先验证"rememberMe" Cookie的值,所以攻击者需要知道受害者已经通过登录验证,并且Shiro框架已经为受害者创建了一个有效的会话,以便攻击者可以利用该会话ID进行身份伪造并绕过Shiro框架的权限控制机制

3、同时,Shiro框架的登录流程也是可以自定义的
 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
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
发出的红包

打赏作者

故事讲予风听

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值