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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/905753.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2024 睿抗机器人开发者大赛CAIP-编程技能赛-专科组(国赛)解题报告 | 珂学家

前言 题解 2024 睿抗机器人开发者大赛CAIP-编程技能赛-专科组&#xff08;国赛&#xff09;&#xff0c;陈越姐姐出题。 国赛比省赛&#xff0c;难度增强了不少&#xff0c;题目就剩下4个题了。 涉及堆栈&#xff0c;hash表&#xff0c;优先队列等高阶数据结构的使用&#x…

15 C 语言字符类型详解:转义字符、格式化输出、字符类型本质、ASCII 码编程实战、最值宏汇总

1 字符类型概述 在 C 语言中&#xff0c;字符类型 char 用于表示单个字符&#xff0c;例如一个数字、一个字母或一个符号。 char 类型的字面量是用单引号括起来的单个字符&#xff0c;例如 A、5 或 #。 当需要表示多个字符组成的序列时&#xff0c;就涉及到了字符串。在 C 语言…

操作系统-锁/内存/中断/IO

文章目录 锁自旋锁互斥锁悲观锁和乐观锁 内存管理物理/虚拟内存页表段表虚拟内存布局写时复制copy on writebrk&#xff0c;mmap页面置换算法 中断中断分类中断流程 网络I/OI/O模型服务器处理并发请求 锁 自旋锁 自旋锁是一种基于忙等待&#xff08;Busy-Waiting&#xff09;…

割点与其例题

割点 定义&#xff1a; 若一个点在图中被去掉后&#xff0c;图的连通块个数增加&#xff0c;那么这个点就被称为“割点”。如下图所示红点。 定义说白了就是若去掉一个点&#xff0c;图被“断开”的点称为割点。 朴素算法&#xff1a; 枚举每个点 u。遍历图&#xff0c;如果…

图卷积神经网络(Graph Convolutional Network, GCN)

最近看论文看到了图卷积神经网络的内容&#xff0c;之前整理过图神经网络的内容&#xff0c;这里再补充一下&#xff0c;方便以后查阅。 图卷积神经网络&#xff08;Graph Convolutional Network, GCN&#xff09; 图卷积神经网络1. 什么是图卷积神经网络&#xff08;GCN&#…

安装win11硬盘分区MBR还是GPT_装win11系统分区及安装教程

最近有网友问我,装win11系统分区有什么要求装win11系统硬盘分区用mbr还是GPT&#xff1f;我们知道现在的引导模式有uefi和legacy两种引导模式&#xff0c;如果采用的是uefi引导模式&#xff0c;分区类型对应的就是gpt分区(guid)&#xff0c;如果引导模式采用的是legacy&#xf…

服务培训QDA 的安装调试方法,硬件模块的讲解和软件控制台使用及系统测试

#服务培训##质谱仪##软件控制##硬件模块# 以下是关于Waters QDa单杆液质质谱仪的安装调试、硬件模块讲解以及软件控制台使用培训的相关内容&#xff1a; 安装调试 场地准备&#xff1a;用户需要提前准备好实验室&#xff0c;确保实验室环境符合仪器的要求&#xff0c;如温度、…

在K8S集群中部署EFK日志收集

目录 引言环境准备安装自定义资源部署ElasticsearchMaster 节点与 Data 节点的区别生产优化建议安装好以后测试ES是否正常部署Fluentd测试filebeat是否正常推送日志部署Kibana获取账号密码&#xff0c;账号是&#xff1a;elastic集群测试 引言 系统版本为 Centos7.9内核版本为…

polarctf-web-[rce1]

考点&#xff1a; (1)RCE(exec函数) (2)空格绕过 (3)执行函数(exec函数) (4)闭合(ping命令闭合) 题目来源&#xff1a;Polarctf-web-[rce1] 解题&#xff1a; 这段代码实现了一个简单的 Ping 测试工具&#xff0c;用户可以通过表单提交一个 IP 地址&#xff0c;服务器会执…

【串流VR手势】Pico 4 Ultra Enterprise 在 SteamVR 企业串流中无法识别手势的问题排查与解决过程(Pico4UE串流手势问题)

写在前面的话 此前&#xff08;用Pico 4U&#xff09;接入了MRTK3&#xff0c;现项目落地需要部署&#xff0c;发现串流场景中&#xff0c;Pico4UE的企业串流无法正常识别手势。&#xff08;一体机方式部署使用无问题&#xff09; 花了半小时解决&#xff0c;怕忘&#xff0c;…

ES(Elasticsearch)的应用与代码示例

Elasticsearch应用与代码示例技术文章大纲 一、引言 Elasticsearch在现代化应用中的核心作用典型应用场景分析&#xff08;日志分析/全文检索/数据聚合&#xff09; 二、环境准备(前提条件) Elasticsearch 8.x集群部署要点IK中文分词插件配置指南Ingest Attachment插件安装…

临床决策支持系统的提示工程优化路径深度解析

引言 随着人工智能技术在医疗领域的迅猛发展,临床决策支持系统(CDSS)正经历从传统规则引擎向智能提示工程的范式转变。在这一背景下,如何构建既符合循证医学原则又能适应个体化医疗需求的CDSS成为医学人工智能领域的核心挑战。本报告深入剖析了临床决策支持系统中提示工程的…

火山RTC 8 SDK集成进项目中

一、SDK 集成预备工作 1、SDK下载 https://www.volcengine.com/docs/6348/75707 2、解压后 3、放在自己项目中的位置 1&#xff09;、include 2&#xff09;、lib 3)、dll 暂时&#xff0c;只需要VolcEngineRTC.dll RTCFFmpeg.dll openh264-4.dll&#xff0c; 放在intLive2…

OkHttp用法-Java调用http服务

特点&#xff1a;高性能&#xff0c;支持异步请求&#xff0c;连接池优化 官方文档&#xff1a;提供快速入门指南和高级功能&#xff08;如拦截器、连接池&#xff09;的详细说明&#xff0c;GitHub仓库包含丰富示例。 社区资源&#xff1a;中文教程丰富&#xff0c;GitHub高…

python中常用的参数以及命名规范

以下是 Python 中常见的命名规范、参数用法及在大型项目中常用的操作模式&#xff0c;供记录参考&#xff1a; 1. 命名规范&#xff08;Naming Conventions&#xff09; 前缀/形式含义示例_age单下划线&#xff1a;弱“私有”标记&#xff08;可访问但不建议外部使用&#xff…

第五十七篇 Java接口设计之道:从咖啡机到智能家居的编程哲学

目录 引言&#xff1a;生活中的接口无处不在一、咖啡机与基础接口&#xff1a;理解抽象契约1.1 咖啡制作的标准接口 二、智能家居与策略模式&#xff1a;灵活切换实现2.1 温度调节策略场景 三、物流系统与工厂模式&#xff1a;标准接口下的多样实现3.1 快递运输接口设计 四、健…

第二十六天打卡

全局变量 global_var 全局变量是定义在函数、类或者代码块外部的变量&#xff0c;它在整个程序文件内都能被访问。在代码里&#xff0c; global_var 就是一个全局变量&#xff0c;下面是相关代码片段&#xff1a; print("\n--- 变量作用域示例 ---") global_var …

联合查询

目录 1、笛卡尔积 2、联合查询 2.1、内连接 2.2、外连接 1、笛卡尔积 笛卡尔积&#xff1a; 笛卡尔积是让两个表通过排列组合的方式&#xff0c;得到的一个更大的表。笛卡尔积的列数&#xff0c;是这两个表的列数相加&#xff0c;笛卡尔积的行数&#xff0c;是这两个表的行…

【HTML5学习笔记2】html标签(下)

1表格标签 1.1表格作用 显示数据 1.2基本语法 <table><tr> 一行<td>单元格1</td></tr> </table> 1.3表头单元格标签 表头单元格会加粗并且居中 <table><tr> 一行<th>单元格1</th></tr> </table&g…

window 显示驱动开发-分页视频内存资源

与 Microsoft Windows 2000 显示驱动程序模型不同&#xff0c;Windows Vista 显示驱动程序模型允许创建比可用物理视频内存总量更多的视频内存资源&#xff0c;然后根据需要分页进出视频内存。 换句话说&#xff0c;并非所有视频内存资源都同时位于视频内存中。 GPU 的管道中可…