WEB安全--Java安全--shiro550反序列化漏洞

一、前言

什么是shiro?

shiro是一个Apache的Java安全框架

它的作用是什么?

Apache Shiro 是一个强大且灵活的 Java 安全框架,用于处理身份验证、授权、密码管理以及会话管理等功能

二、shiro550反序列化原理

1、用户首次登录并勾选记住密码功能,第一个请求包会多一个remember-me的参数

2、然后第一个回包中就会将用户登录信息进行**>>序列化>>AES加密>>base64编码** ,并将该值存到Cookie的rememberMe参数中,并返回给客户端

3、当客户端发起第二个请求包时,该数据包中的Cookie就会携带rememberMe和它的值(密文)

然后服务端取出Cookie中的密文进行**>>base64解码>>AES解密>>反序列化**,然后就能取出用户登录信息进行校验

三、漏洞原因

在AES加解密的过程中,使用的是相同的秘钥,而在shiro版本<=1.2.24的版本中使用了固定的密钥kPH+bIxk5D2deZiIxcaaaA==

所以攻击者就能通过相同的方式伪造Cookie中的密文,写入恶意代码,在服务端对Cookie中的数据进行反序列化时就会执行恶意代码

图示:

四、利用思路总结

在我们知道shiro550版本框架存在反序列化漏洞后,就可以通过下面方式实现命令执行:

1、客户端首次用账号密码登录,勾选记住密码

2、响应包中的set-Cookie中存放着加密的用户信息密文

3、客户端再次访问服务端,请求包中的Cookie中就会存在rememberMe: 加密的用户信息密文

4、拦截这个请求包

5、构造payload(如CC链),将payload>>序列化>>AES加密>>base64编码

6、用构造的payload密文替换请求包中的rememberMe中的加密的用户信息密文

7、放包(请求包),服务端接收到我们更改后的请求包

8、JVM取出Cookie中的rememberMe中的密文进行>>base64解码>>AES解密>>反序列化

9、反序列化的readObject()触发CC链,实现命令执行

相关推荐
zhengfei611几秒前
【渗透工具】Payloader — 渗透测试辅助平台(payload一键所有)
网络·安全·web安全
Jinkxs2 分钟前
Resilience4j- 与 Spring Boot 快速集成:自动配置与基础注解使用
java·spring boot·后端
辣机小司3 分钟前
【踩坑记录:Spring Boot 配置文件读取值不一致?警惕 YAML 的“八进制陷阱”与 SnakeYAML 版本之谜】
java·spring boot·后端·yaml·踩坑记录
fangdengfu1231 小时前
ES分析系统各个服务日志占用量
java·前端·elasticsearch
云烟成雨TD1 小时前
Spring AI 1.x 系列【51】可观测性技术选型
java·人工智能·spring
星越华夏1 小时前
ESP32-CAM图像传输项目说明文档
java·后端·struts·esp32
Multipath7122 小时前
无人区不掉线:多链路聚合路由,为环塔拉力赛筑起“空中通讯走廊”
网络·5g·安全·无人机·实时音视频
Jinkxs2 小时前
Java 跨域14-Java 与区块链(Hyperledger)集成
java·开发语言·区块链
知识浅谈2 小时前
人工智能日报 每日AI新闻(2026年6月8日):OpenAI安全加码、苹果AI升级前夜与国产AI应用落地
人工智能·安全·chatgpt
晨曦中的暮雨3 小时前
Golang速通(Javaer版)
java·开发语言·后端·golang