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链,实现命令执行

相关推荐
JH30732 小时前
SpringBoot 优雅处理金额格式化:拦截器+自定义注解方案
java·spring boot·spring
Coder_Boy_3 小时前
技术让开发更轻松的底层矛盾
java·大数据·数据库·人工智能·深度学习
invicinble4 小时前
对tomcat的提供的功能与底层拓扑结构与实现机制的理解
java·tomcat
较真的菜鸟4 小时前
使用ASM和agent监控属性变化
java
黎雁·泠崖4 小时前
【魔法森林冒险】5/14 Allen类(三):任务进度与状态管理
java·开发语言
九河云5 小时前
5秒开服,你的应用部署还卡在“加载中”吗?
大数据·人工智能·安全·机器学习·华为云
ShoreKiten5 小时前
ctfshowweb351-360
web安全·ssrf
qq_12498707535 小时前
基于SSM的动物保护系统的设计与实现(源码+论文+部署+安装)
java·数据库·spring boot·毕业设计·ssm·计算机毕业设计
枷锁—sha5 小时前
【SRC】SQL注入WAF 绕过应对策略(二)
网络·数据库·python·sql·安全·网络安全
Coder_Boy_5 小时前
基于SpringAI的在线考试系统-考试系统开发流程案例
java·数据库·人工智能·spring boot·后端