Shiro反序列化漏洞原理详解及复现

shiro反序列化漏洞的原理和复现 一、shiro简介 Shiro是一个强大的简单易用的Java安全框架,主要用来更便捷的认证,授权,加密,会话管理。Shiro首要的和最重要的目标就是容易使用并且容易理解。 二、shiro的身份认证工作流程 通过前端传入的值, 获取rememberMe cookie base64加密 AES加密 (对称加解密) 反序列化 三、shiro反序列化漏洞原理 AES加密的密钥Key被硬编码在代码里,意味着每个人通过源代码都能拿到AES加密的密钥。因此,攻击者构造一个恶意的对象,并且对其序列化,AES 阅读详情

1 环境搭建

采用vulhub的shiro环境

# docker-compose up -d

访问8080端口测试是否成功

2 漏洞原理及利用

Shiro是一款开源安全框架,用于身份验证、授权和会话管理

0x01 漏洞探测

在登录时勾选Remember me,burp抓包可以看到,响应包的set-cookie字段存在rememberMe


后续访问时,cookie中携带rememberMe(由于在repeater测试,因此两次抓到的rememberMe不同)

反之,如果不勾选Remember me,则set-cookie时rememberMe=deleteMe

基于此特征,可以大致判断出网站是否使用shiro,是否存在漏洞

0x02 漏洞原理

此处不对源码进行详细分析,具体分析可以看大佬的这篇
服务端在接收到cookie后,会对cookie进行三部操作

  1. 检索rememberMe字段

  2. base64解码(从上图中也可以看出rememberMe字段进行了base64编码)

  3. AES解密,shiro默认加密方式,存在padding oracle攻击及密钥泄露,是可以利用的核心

  4. 对AES解密出的内容进行反序列化,此处为漏洞成因

0x03 漏洞利用

首先利用URLDNS链判断是否可以利用
URLDNS链从HashMap.readObject方法起始,经过HashMap.Hash->URL.hashCode->URLStreamHandler.hashCode,最终到URLStreamHandler.getHostAddress发送一次解析请求

利用ysoserial生成URLDNS链

$java -jar ysoserial URLDNS 'http://xxx.dnslog.cn'>1.txt

编写脚本对payload进行加密编码(后续放在github上)
删除JSESSIONID(当该字段存在时,不检测rememberMe),修改rememberMe为加密后的值发送


查看dnslog,成功发送请求,证明存在可利用漏洞

生成CC链,再次按照上述方式发送,执行命令为反弹shell(CC6可打通),注意vulhub靶机本身没有nc,如果使用nc需要先上传

3 其他版本反序列化漏洞

shiro721:1.4.2版本以下仍采用CBC加密,但密钥不再硬编码,因此可以使用padding oracle实现攻击
1.4.2+:加密方式变为GCM

4 防御

  1. 升级shiro版本

  2. 限制rememberMe字段长度

Shiro反序列化漏洞 Shiro反序列化漏洞 目录 Shiro反序列化漏洞 1.1 漏洞介绍 1.1.1 漏洞简介 1.1.2 影响版本 1.1.3 漏洞原理 1.1.4 漏洞特征 1.1.5 漏洞影响   1.2 环境配置 1.3 漏洞检测 ​​1.4 漏洞利用 1.5 防御措施 参考: 一、Shrio反序列化导致命令执行(Shiro-550 CVE-2016-4437) 1.1 漏洞介绍 1.1.1 漏洞简介   Apache Shiro是一款开源企业常见JAVA安全框架,提供... 阅读详情

相关推荐

shiro反序列化漏洞

序列化就是把对象转换成字节流,便于保存在内存、文件、数据库中,保证对象的完整性和可传递性;反序列化即逆过程,由字节流还原成对象。根据字节流中保存的对象状态及描述信息,通过反序列化重建对象。Apache Shiro是一个强大且易用的Java安全框架,执行身份验证、授权、密码和会话管理。使用Shiro的易于理解的API,可以快速、轻松地获得任何应用程序,从最小的移动应用程序到最大的网络和企业应用程序。漏洞影响版本。

wutiangui的博客 3322

Shiro反序列化漏洞【详细解析】

Shiro是什么东西 Shiro 是 Java 的一个安全框架,执行身份验证、授权、密码、会话管理 shiro默认使用了CookieRememberMeManager,其处理cookie的流程是:得到rememberMe的cookie值–>Base64解码–>AES解密–>反序列化 然而AES的密钥是硬编码的,就导致了攻击者可以构造恶意数据造成反序列化的RCE漏洞。 原理解释https://www.freebu...

weixin_47536169的博客 1万+

Shiro反序列化漏洞:从原理到利用工具深度解析

Java反序列化漏洞是Web安全领域的核心议题之一,其原理在于攻击者通过构造恶意序列化数据,在服务器端反序列化时触发远程代码执行(RCE)。这种漏洞的根源在于Java原生反序列化机制缺乏安全校验,当环境中存在可利用的第三方库(如Apache Commons Collections)时,多个无害类通过特定引用关系组合形成利用链(Gadget Chain),最终实现命令执行或文件操作等危险行为。从技术价值看,理解反序列化机制不仅有助于漏洞防御,更是代码审计和应急响应的基础能力。在应用场景上,Java反序列化漏洞

weixin_42539414的博客 204

Shiro反序列化漏洞原理详解及复现,2024年最新0基础Golang开发

不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!生成CC链,再次按照上述方式发送,执行命令为反弹shell(CC6可打通),注意vulhub靶机本身没有nc,如果使用nc需要先上传。删除JSESSIONID(当该字段存在时,不检测rememberMe),修改rememberMe为加密后的值发送。AES解密,shiro默认加密方式,存在padding oracle攻击及密钥泄露,是可以利用的核心。

2401_84254196的博客 748

Shiro-550反序列化漏洞原理与实战复现深度解析

Java反序列化漏洞是Web安全领域的核心议题之一,其原理在于Java对象序列化与反序列化机制的安全缺陷。攻击者通过构造恶意的序列化数据,在目标应用反序列化时触发预设的调用链,从而执行任意代码,实现远程命令执行。这项技术的价值在于其危害性高、利用链成熟,常被用于红队评估和渗透测试,以检验应用的安全性。典型的应用场景包括攻击使用了Apache Shiro、Fastjson等流行框架且配置不当的Java Web应用。本文聚焦于经典的Shiro-550漏洞,深入剖析其因硬编码AES密钥导致的认证绕过机制,并详细演

weixin_33692284的博客 460

Apache Shiro反序列化漏洞原理、复现与纵深防御实战指南

Java反序列化漏洞是Web应用安全领域的核心威胁之一,其原理在于攻击者通过构造恶意的序列化数据,在目标系统进行反序列化操作时触发任意代码执行。这类漏洞的技术价值在于其危害性高、利用链复杂,常出现在广泛使用的Java框架和组件中。在应用场景上,反序列化漏洞常被用于攻击会话管理、远程通信和数据持久化等机制,对金融、电商和企业级系统构成严重风险。本文聚焦于Apache Shiro框架的系列反序列化漏洞,特别是围绕其RememberMe功能的加密与反序列化流程,深入剖析了从CVE-2016-4437(默认密钥)到

weixin_33739541的博客 380

Shiro反序列化漏洞原理详解及复现(1),Golang开发的基础知识

不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!生成CC链,再次按照上述方式发送,执行命令为反弹shell(CC6可打通),注意vulhub靶机本身没有nc,如果使用nc需要先上传。删除JSESSIONID(当该字段存在时,不检测rememberMe),修改rememberMe为加密后的值发送。当然除了有配套的视频,同时也为大家整理了各种文档和书籍资料&工具,并且已经帮大家分好类了。

2401_84254177的博客 504

Shiro-550反序列化漏洞复现

PS:欢迎访问我的个人博客 http://luckyzmj.cn 0x01 漏洞简介 Apache Shiro是一款开源安全框架,提供身份验证、授权、密码学和会话管理。Shiro框架直观、易用,同时也能提供健壮的安全性。 Apache Shiro 1.2.4及以前版本中,加密的用户信息序列化后存储在名为remember-me的Cookie中。攻击者可以使用Shiro的默认密钥伪造用户Cookie,触发Java反序列化漏洞,进而在目标机器上执行任意命令。 影响版本 Shiro <= 1.2.4 0

LuckySec 5008

Shiro反序列化漏洞复现:原理详解+环境搭建+渗透实践(CVE-2016-4437 2种方法)

本文详细分析了Apache Shiro反序列化漏洞(CVE-2016-4437)的原理与利用方法。该漏洞源于Shiro框架的RememberMe功能使用了硬编码的AES密钥,攻击者可构造恶意对象进行序列化、加密后作为cookie发送,触发反序列化执行任意代码。文章通过Vulhub搭建漏洞环境,演示了两种渗透方法:手动利用ysoserial生成payload并通过Python脚本处理,以及使用ShiroAttack2图形化工具完成密钥爆破、命令执行和内存马注入,最终通过哥斯拉成功获取目标主机权限。

mooyuan的网络安全博客 3102

Shiro-550漏洞详解及复现

Shiro是Apache的一个强大且易用的Java安全框架,用于执行身份验证、授权、密码和会话管理。借助Shiro易于理解的API,用户可以快速轻松地保护任何应用程序----从最小的移动应用程序到最大的web和企业应用程序。Shiro是一个Java的安全框架,用于执行身份验证、授权、密码和会话验证。

m0_64481831的博客 3409

【漏洞复现】Shiro 反序列化漏洞

Apache Shiro是一款开源安全框架,提供身份验证、授权、密码学和会话管理。Shiro框架直观、易用,同时也能提供健壮的安全性。Apache Shiro 1.2.4及以前版本中,加密的用户信息序列化后存储在名为remember-me的Cookie中。攻击者可以使用Shiro的默认密钥伪造用户Cookie,触发Java反序列化漏洞,进而在目标机器上执行任意命令。该款工具特别适合初学者,配置了各种OA漏洞利用板块,还有shiro、struts2等框架漏洞的漏洞利用板块,还有一键执行命令的功能!!

2301_80115097的博客 2876

Shiro反序列化漏洞原理详解及复现(2),这些Golang高级必会知识点你能答出来几个

不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!生成CC链,再次按照上述方式发送,执行命令为反弹shell(CC6可打通),注意vulhub靶机本身没有nc,如果使用nc需要先上传。删除JSESSIONID(当该字段存在时,不检测rememberMe),修改rememberMe为加密后的值发送。当然除了有配套的视频,同时也为大家整理了各种文档和书籍资料&工具,并且已经帮大家分好类了。

2401_84254196的博客 464

mipi协议中的calibration和scramble模式

在MIPI(Mobile Industry Processor Interface)协议中,calibration(校准)和scramble(加扰)模式是两个重要的特性,它们分别用于优化数据传输的准确性和减少信号干扰。

flomingo1的专栏 2402

learnjavabug项目详解:10个必学的Java反序列化漏洞利用技巧

# learnjavabug项目详解:10个必学的Java反序列化漏洞利用技巧 **Java反序列化漏洞**是当今企业级应用安全中最危险的安全威胁之一,而learnjavabug项目则是一个专注于Java安全漏洞研究和技术演示的开源项目。这个项目包含了丰富的Java反序列化漏洞利用技巧、框架漏洞复现和实践代码,是学习Java安全攻防的绝佳资源库。通过学习这个项目,安全研究人员和开发人员可以深入了

gitblog_00050的博客 738

小白学习图像处理6——Canny边缘检测算法原理

目录结构一、高斯滤波二、梯度计算1、原理2、代码如下三、非极大值抑制三、双阈值检测四、matlab 的 edge函数五、总结 Canny边缘检测算法主要步骤:高斯滤波、梯度计算、非极大值抑制和双阈值检测。 一、高斯滤波   使用高斯滤波的目的是平滑图像,滤除图像中的部分噪声(因为微分算子对噪声很敏感)。高斯滤波具体办法是生成一个高斯模板,使用卷积进行时域滤波: img = im2double(im...

我有两颗糖 7791

ADI DSP开发环境(CCES)下的程序烧录问题(以ADSP-SC589为例)

在CCES环境下将程序烧录到flash主要有两种方式。首先在对项目编译产生文件的属性设置为Release。 在编译完成后,找到每个CORE单独生成的DXE文件: 文件通常位于项目目录下每个core的Release文件中。安装SC589评估板的驱动(ADSP-SC5xx_EZ-KIT_Lite-Rel2.0.0.exe)后,在安装目录下可以找到SPI FLASH芯片的驱动程序(sc589_w25q128fv_dpia_Core1.dxe): 把文件copy到CCES 的目录下由于SC58x处理器的特殊性

daijingxin的博客 3731

【漏洞复现】Shiro550反序列漏洞复现和利用(含docker+vulhub环境安装)

序列化(Serialization)是将对象状态信息转换为可以存储或传输的形式(例如,字节流)的过程。这样,以后可以在相同或不同的计算机环境中重新创建该对象。反序列化(Deserialization)是序列化的逆过程,它将之前序列化过程中生成的数据(通常是字节流)转换回原始对象的过程。在反序列化过程中,系统会根据序列化数据中的信息重新创建对象,并恢复对象在序列化时的状态。VUlhub是一个面向大众的开源漏洞靶场,无需Docker知识,简单执行两条命令即可编译、运行一个完整的漏洞靶场镜像。

weixin_53379921的博客 2731

解决MATLAB2020B关于找不到vs2019C++编译器问题

解决MATLAB2020B关于找不到vs2019C++编译器问题

wcm2577的博客 7607

shiro550反序列化漏洞原理与漏洞复现(基于vulhub,保姆级的详细教程)_shiro550原理

如何判断我的服务器是否受到了针对shiro550漏洞的攻击?检查日志:查看系统的日志文件,看是否有异常的访问记录或登录失败记录,如果发现了异常,可以进一步分析该记录是否与Shiro550漏洞有关。检查系统状态:检查系统是否存在异常状态,如系统崩溃、服务宕机等,这可能是攻击者利用Shiro550漏洞进行攻击导致的。检查用户行为:检查是否有用户在短时间内多次尝试登录或者进行异常操作,这可能是攻击者正在利用Shiro550漏洞尝试获取系统权限。

baimao__Ch的博客 1124

ConvNeXt 系列改进:二次创新 ConvNeXt:结合 RepVGG 结构重参数化,训练多分支、推理单路

2026年的视觉模型赛道呈现出一种有趣的“返璞归真”趋势——在Transformer狂飙数年之后,卷积网络正以全新的姿态回归。这其中,ConvNeXt无疑是纯卷积阵营中最耀眼的明星。从2022年Meta AI首次提出至今,ConvNeXt系列已经走过了近四年的演进之路,衍生出ConvNeXt V2、E-ConvNeXt等多个增强版本。ConvNeXt的7×7深度卷积带来了不错的感受野,却也埋下了推理效率的隐患。

ZXSXJ的博客 234

【AI智能体】Codex 插件从使用到项目开发实战操作详解

Codex 插件从使用到项目开发实战操作详解

congge 7648

shiro漏洞复现--vulhub

复现shiro框架的常见漏洞;vulhub;CVE-2016-4437,shiro-550;CVE-2019-12422,shiro-721;CVE-2020-1957。

ccc_9wy的博客 1567

QT6实现USB摄像头接入显示与抓拍功能实现

QT实现USB摄像头接入显示 一、UVC协议简介 UVC全称是USB Video Class(USB视频类),是一种标准化的USB视频设备通信协议,它定义了摄像头与主机之间的数据传输协议和格式。 UVC协议的出现,解决了摄像头厂商之间互不兼容,以及摄像头应用开发与平台之间的散乱问题。 UVC标准是由USB-IF主导制定的,目前最新的版本是UVC 1.5,UVC的缺省设置类容易实现,不需要额外的驱动程序。

热土程序园,利他愉己~ 3417
上一篇: 渗透测试 | 一次利用XSS读取源码
下一篇: MySQL绕过WAF实战技巧
AI小模型
博客等级 码龄6年 6863粉丝 487原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

AI小模型

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

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

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

打赏作者

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

抵扣说明:

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

余额充值