Java反序列化漏洞-Shiro721流程分析

环境搭建

漏洞影响版本是 1.2.5 <= Apache Shiro <= 1.4.1

环境下载

所以我们下载对应漏洞版本的源码即可

shrio1.4.1复现的对应源码:

plain 复制代码
https://archive.apache.org/dist/shiro/1.4.1/shiro-root-1.4.1-source-release.zip

下载shiro对应的war依赖包:

plain 复制代码
https://github.com/jas502n/SHIRO-721/blob/master/samples-web-1.4.1.war

tomcat 8.5.76 下载地址:

plain 复制代码
E:\JavaSecurity_Learn\java\code\Shiro721\apache-tomcat-8.5.76

过程

首先IDEA 点击Open 打开Shiro-root-1.4.1的源码的项目,如图路径

Ctrl+Shift+S如图进行配置JDK版本

Ctrl+Alt+S来到进行配置Tomcat服务器

不可以中文路径

最后来到这里进行配置运行

然后如图进行点击

首先来到这里配置war包

这里可以修改访问的路径

在来到服务器这里

然后点击Run就可以看见运行成功了

idea设置自动下载源码和文档

漏洞原理

密钥生成

Ctrl+Alt+B查看相关的实现类

这是Shiro550,可以看见 AbstractRememberMeManager 类 中的密钥不是动态生成的,而是硬编码

Shiro721对比Shiro550,密钥的生成位置变了

通过断点调试 ,可以看到这个方法的主要功能是:

plain 复制代码
根据指定的算法名称,使用JDKKeyGenerator生成一个适合此CipherService的新密钥(基于algorithmName)
参数:keyBitSize一用于创建密钥的位数大小
返回:创建的、适用于此CipherService的密钥。

可以看见 KeyGenerator 对象调用了init方法

这里调用了下面的双参数init方法,并且获取了一个随机数发生器 SecureRandom

然后步入到这里,可以看见这里生成了一串16字节的随机序列,然后返回了一个SecretKeySpec对象

然后在调用getEncoded()方法来获取16字节的序列。这也是所谓的密钥序列

漏洞利用

工具-ShiroAttack2

ShiroAttack2:https://github.com/SummerSec/ShiroAttack2

利用exp工具直接打即可,我们已经知道这个是Shiro框架网站了

直接输入目标地址

可以看到命令执行成功

参考链接&致谢:

https://goodapple.top/archives/217

https://zhuanlan.zhihu.com/p/73731154

https://goodapple.top/archives/261

难点是如何构造密码爆破,以及工具编写

相关推荐
FQNmxDG4S10 小时前
Java多线程编程:Thread与Runnable的并发控制
java·开发语言
虹科网络安全11 小时前
艾体宝干货|数据复制详解:类型、原理与适用场景
java·开发语言·数据库
axng pmje11 小时前
Java语法进阶
java·开发语言·jvm
rKWP8gKv712 小时前
Java微服务性能监控:Prometheus与Grafana集成方案
java·微服务·prometheus
老前端的功夫12 小时前
【Java从入门到入土】28:Stream API:告别for循环的新时代
java·开发语言·python
qq_4352879212 小时前
第9章 夸父逐日与后羿射日:死循环与进程终止?十个太阳同时值班的并行冲突
java·开发语言·git·死循环·进程终止·并行冲突·夸父逐日
小江的记录本12 小时前
【Kafka核心】架构模型:Producer、Broker、Consumer、Consumer Group、Topic、Partition、Replica
java·数据库·分布式·后端·搜索引擎·架构·kafka
yaoxin52112312 小时前
397. Java 文件操作基础 - 创建常规文件与临时文件
java·开发语言·python
极客先躯14 小时前
高级java每日一道面试题-2025年11月24日-容器与虚拟化题[Dockerj]-runc 的作用是什么?
java·oci 的命令行工具·最小可用·无守护进程·完全标准·创建容器的核心流程·runc 核心职责思维导图
用户606487671889614 小时前
AI 抢不走的技能:用 Claude API 构建自动化工作流实战
java