Shiro 反序列化漏洞原理详解(CVE-2016-4437)

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

Shiro-550 CVE-2016-4437 漏洞学习笔记

今天某个大佬教了我一个新的漏洞知识(能每天跟某大佬学习就是开心),就是 shiro 反序列化漏洞。真的是学无止境啊!赶紧趁着夜深人静来网上码一码相关知识,学习学习相关概念,复现漏洞的话等我再牛逼一点慢慢补上吧~

1.1 Shiro 介绍

Apache Shiro 是一个强大且易用的 Java 安全框架,执行身份验证、授权、密码和会话管理。

1.2 漏洞影响版本

Apache Shiro < 1.2.4

1.3 漏洞原理

Shiro 反序列化漏洞的关键就在于它"记住我"的这个功能(RememberMe),就是我们日常生活中经常看见的那个"记住密码"。用户登录成功后会生成经过加密并编码的 cookie。cookie 的 key 为 RememberMe,其值是对信息做了序列化处理,即先进行了 AES 加密,再进行 Base64 编码形成。

在服务端接收 cookie 值时,按照如下步骤来解析处理:

1、检索 RememberMe cookie 的值

2、Base64 解码

3、使用 AES 解密

4、进行反序列化操作(未作过滤处理)

攻击者可以构造携带恶意代码的 Java 对象,序列化后,用 Shiro 的 AES 密钥加密、Base64 编码,填入 RememberMe Cookie。服务端拿到 Cookie 解密后直接反序列化,没有校验对象是否可信,恶意代码就会执行,也就是远程代码执行(RCE)。

其中最重要的是,AES 的密钥在 Shiro 中是硬编码写死在源码里的默认密钥(Shiro550 的密钥是固定的,不需要爆破,直接拿出来就能用)。如果开发者没有更改默认密钥,攻击者拿到密钥就能自己加密构造恶意 payload,从而解密并触发反序列化。

1.4 漏洞利用方式

参考:Shiro 反序列化漏洞利用汇总 - 腾讯云开发者社区-腾讯云

(1)反弹 shell

(2)写入文件

(3)一键自动化漏洞利用工具

1.5 补:序列化和反序列化

序列化:

序列化是将复杂的数据结构(例如对象及其字段)转换为字节序列的过程,以便在网络上传输或者保存在本地文件中。

进行序列化之后,在传递和保存对象的时候,对象的状态以及相关的描述信息依旧是完整的并且可进行传递。
序列化机制的核心作用就是对象状态的保存与重建。

反序列化:

反序列化是将字节流还原为原始对象的过程,反序列化之后的对象其状态与序列化时的状态完全相同。然后,网站的逻辑可以与此反序列化的对象进行交互,就像与任何其他对象进行交互一样。

许多编程语言为序列化提供本机支持。对象的确切序列化方式取决于语言。某些语言将对象序列化为二进制格式,例如 JAVA;而其他语言则使用不同的字符串格式,序列化之后的字节序列都具有不同程度的可读性,并且,所有原始对象的属性都存储在字节序列中。

2. 常见混淆点:Shiro550 与 Shiro721 的区别

很多新手会把 Shiro 的这两个反序列化漏洞搞混,这里简单区分一下:

  • Shiro550(CVE-2016-4437):密钥是硬编码在源码里的默认值,拿源码就能看到,不用爆破。只要网站没改默认密钥,就能直接构造恶意 Cookie。
  • Shiro721:密钥是开发者自己定义的,不再是默认的,但是存在Padding Oracle 漏洞,可以通过大量爆破去还原密钥,再构造恶意 Cookie 触发反序列化。

一个是"密钥默认写死",一个是"密钥要爆破",这是两个漏洞最本质的区别。

3. 漏洞危害

一旦成功利用 Shiro 反序列化漏洞,攻击者可以获得非常严重的后果:

  • 远程代码执行(RCE):直接在服务器上执行任意命令,拿下服务器权限。
  • 读取、篡改服务器上的敏感数据,甚至植入后门木马、挖矿程序。
  • 以内网为跳板,横向渗透攻击企业其他系统。

一句话:反序列化不可信数据 + 硬编码默认密钥 = 服务器沦陷。

4. 环境复现(下篇预告)

这次我们先梳理原理和概念,把漏洞的"为什么"讲清楚。至于靶场搭建、抓包构造恶意 Cookie、利用工具实操复现这些,等我再牛逼一点,下篇慢慢补上~

5. 安全修复与防御方案

针对 Shiro550,防御的核心就一句话:别让攻击者能预测你的密钥,也别轻易反序列化不可信数据。 具体措施如下:

  1. 升级 Shiro 版本到 1.2.4 及以上,修复已知反序列化漏洞。
  2. 修改默认 AES 密钥,换成足够复杂、随机、不公开的密钥,让攻击者无法预判。
  3. 关闭不必要的 RememberMe 功能,业务不需要"记住我"就直接关掉。
  4. 部署 WAF(Web 应用防火墙),检测并拦截异常的 RememberMe Cookie 请求。
  5. 遵循最小权限原则,降低应用运行账号的权限,缩小被攻破后的影响范围。

6. 结尾总结

复盘一下:Shiro550 的本质,就是"记住我"功能把用户信息序列化加密后存进 Cookie,而 AES 密钥默认写死在源码里,导致攻击者可以自己构造携带恶意代码的序列化对象,加密编码后放进 RememberMe Cookie,服务端解密后不做任何过滤直接反序列化,从而触发远程代码执行。

反序列化漏洞最大的风险点,就是反序列化了不可信的数据。安全防护的底线永远是:对外来的输入保持怀疑,永远不要信任。


最后

关于网络安全技术储备

学好网络安全不论是就业还是做副业赚钱都不错,但要学会网络安全还是要有一个学习规划。最后大家分享一份全套的网络安全学习资料,给那些想学习网络安全的小伙伴们一点帮助!

对于0基础小白入门:

如果你是零基础小白,想快速入门网络安全是可以考虑的。

一方面是学习时间相对较短,学习内容更全面更集中。

二方面是可以找到适合自己的学习方案

包括:网安成长学习路线图、SRC&黑客文档、护网行动、黑客必读书单、面试题、学习视频等教程。带你从零基础系统性的学好网络安全!

需要的可以微信扫描下方优快云官方认证二维码免费领取【保证100%免费】

img

👉1.成长路线图&学习规划👈
要学习一门新的技术,作为新手一定要先学习成长路线图,方向不对,努力白费。

对于从来没有接触过网络安全的同学,我们帮你准备了详细的学习成长路线图&学习规划。可以说是最科学最系统的学习路线,大家跟着这个大的方向学习准没问题。

在这里插入图片描述

👉2.网安入门到进阶视频教程👈
很多朋友都不喜欢晦涩的文字,我也为大家准备了视频教程,其中一共有21个章节,每个章节都是当前板块的精华浓缩。(全套教程文末领取哈)

在这里插入图片描述

👉3.SRC&黑客文档👈
大家最喜欢也是最关心的SRC技术文籍&黑客技术也有收录

SRC技术文籍:

在这里插入图片描述

黑客资料由于是敏感资源,这里不能直接展示哦!(全套教程文末领取哈)

👉4.护网行动资料👈
其中关于HW护网行动,也准备了对应的资料,这些内容可相当于比赛的金手指!

在这里插入图片描述

👉5.黑客必读书单👈

随着互联网技术的飞速发展,网络安全已经成为了当今科技领域的一大热点。这些SQL注入、CCNA、Web渗透、Linux服务器等,以其强大的语言理解和防御能力,正在守护着我们网络世界。 那以下这些PDF籍就是非常不错的学习资源。

img

👉6.网络安全岗面试题合集👈
当你自学到这里,你就要开始思考找工作的事情了,而工作绕不开的就是真题和面试题。

在这里插入图片描述

这份完整版的网络安全学习资料已经上传优快云,朋友们如果需要可以微信扫描下方优快云官方认证二维码免费领取【保证100%免费】

img

shiro反序列化漏洞原理与分析 原理 AES加密的密钥Key被硬编码在代码里,每个人通过源代码都能拿到AES加密的密钥。因此,攻击者构造一个恶意的对象,并且对其序列化,AES加密,base64编码后,作为cookie的rememberMe字段发送。Shiro将rememberMe进行解密并且反序列化,最终就会造成反序列化漏洞。 阅读详情

相关推荐

shiro反序列化漏洞

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

wutiangui的博客 3323

漏洞分析 | 经典的Shiro反序列化

其实这个还是得学习学习加密解密的方法,才能进行编写poc,但是此处只是了解个思路。具体可参考其他文章;声明:⽂中所涉及的技术、思路和⼯具仅供以安全为⽬的的学习交流使⽤,任何⼈不得将其⽤于⾮法⽤途以及盈利等⽬的,否则后果⾃⾏承担。所有渗透都需获取授权!免费领取安全学习资料包!渗透工具技术文档、书籍面试题帮助你在面试中脱颖而出视频基础到进阶环境搭建、HTML,PHP,MySQL基础学习,信息收集,SQL注入,XSS,CSRF,暴力破解等等应急响应笔记学习路线。

2301_80115097的博客 2815

Apache Shiro反序列化漏洞CVE-2016-4437:从原理到实战复现

Java反序列化漏洞是Web安全领域的经典议题,其核心原理在于ObjectInputStream.readObject()方法在反序列化数据时会自动执行对象类中定义的逻辑,若处理来自不可信源的序列化数据,攻击者可构造恶意调用链实现远程代码执行。这一机制的安全风险在Apache Commons Collections等常用库的特定类中被放大,形成了诸如Transformer链的利用路径,对Java应用构成严重威胁。从技术价值看,理解反序列化漏洞有助于构建纵深防御体系,是安全开发与渗透测试的必备知识。在应用场景

weixin_29323273的博客 248

shiro反序列化搭建、利用、复现、漏洞原理

在Shiro框架下框架供了记住密码的功能(RememberMe)用户登陆成功后会生成一个经过加密的Cookie其Cookie的RememberMe的Value的值是经过序列化、AES加密和base64编码后得到的结果。由于使用了AES加密,在Shiro1.2.4版本之前AES加密默认密钥的Base64编码值为kPH+bIxk5D2deZiIxcaaaA==,于是就可得到Payload的构造流程:恶意命令–>序列化–>AES加密–>base64编码–>发送Cookie–>回显数据–>数据解码。

芜湖~米汤来喽~ 2620

Apache Shiro反序列化漏洞CVE-2016-4437原理、复现与防御实战

Java反序列化漏洞是Web安全领域的经典议题,其核心原理在于攻击者通过构造恶意序列化数据,在目标系统反序列化过程中触发预设的调用链(Gadget Chain),最终实现任意代码执行。这项技术的安全价值在于揭示了依赖库默认配置与输入验证缺失所带来的巨大风险,广泛应用于渗透测试、红蓝对抗及企业安全评估等场景。Apache Shiro框架的CVE-2016-4437漏洞(Shiro-550)正是这一原理的典型体现,其利用默认AES密钥与CommonsCollections等依赖链,通过RememberMe功能C

weixin_34055787的博客 319

[Vulfocus实战解析] Apache Shiro反序列化漏洞(CVE-2016-4437)从原理到靶场突破

本文深入解析了Apache Shiro反序列化漏洞(CVE-2016-4437)的成因与利用过程。漏洞源于Shiro框架“记住我”功能中硬编码的AES密钥,攻击者可借此伪造Cookie实现远程代码执行。文章通过Vulfocus靶场实战,详细演示了从指纹识别、密钥探测到最终获取Flag的完整攻击链,并提供了修复与加固建议。

weixin_29327525的博客 281

深入剖析Shiro反序列化漏洞(CVE-2016-4437):从原理到实战利用

本文深入剖析了Apache Shiro反序列化漏洞(CVE-2016-4437)的原理、影响与利用方式。该漏洞源于Shiro默认密钥硬编码及不安全的反序列化逻辑,攻击者可利用‘记住我’功能构造恶意Cookie,在服务器上执行任意命令或注入内存马。文章详细介绍了漏洞探测、环境复现及利用链,并提供了升级框架、更换密钥等关键防御建议。

docker7nomad的博客 682

从原理到实战:深度剖析Apache Shiro Remember Me反序列化漏洞(CVE-2016-4437)的攻防博弈

本文深度剖析Apache Shiro Remember Me反序列化漏洞(CVE-2016-4437)的攻防博弈,详细解析其核心原理、攻击链构建及防御方案。文章揭示了Shiro默认密钥硬编码的致命缺陷,并提供了实战环境搭建、利用工具演示以及企业级防护建议,帮助开发者与安全人员全面理解并有效防范此类漏洞。

weixin_42525738的博客 221

Shiro反序列化漏洞提权渗透实战:原理+复现(CVE-2016-4437)

本文详细分析了Apache Shiro框架的反序列化漏洞(CVE-2016-4437),该漏洞因硬编码密钥导致攻击者可通过rememberMe Cookie执行任意代码。文章介绍了漏洞检测方法(通过Burp Suite抓包识别特征)和利用工具ShiroAttack2的实战过程,包括密钥爆破、命令执行和内存马注入。最后演示了使用哥斯拉木马连接被控服务器的完整流程,包含URL配置、密码设置和命令执行等步骤。防御建议包括升级版本、更换密钥和限制反序列化类等。

mooyuan的网络安全博客 2130

手把手教你用AD9834 DDS模块DIY一个可调信号源(附AD原理图/PCB/程序)

本文详细介绍了如何使用AD9834 DDS模块DIY一个高精度可调信号源,涵盖硬件搭建、原理图解读、PCB优化和程序烧录等关键步骤。通过STM32控制实现0-10MHz频率范围输出,特别适合电子设计与射频实验,提供完整的AD原理图、PCB设计和程序代码参考。

weixin_31854867的博客 409

【从零搭建到实战运行】基于PX4-1.13与XTDrone的FAST-LIVO2 Gazebo仿真全流程解析

本文详细解析了从零开始搭建基于PX4-1.13飞控、XTDrone仿真框架与Gazebo的FAST-LIVO2无人机仿真平台的全流程。内容涵盖环境配置、Livox雷达插件定制、算法部署与参数调试,旨在帮助开发者快速构建完整的激光-惯性-视觉SLAM仿真环境,并解决集成过程中的常见问题。

weixin_29218509的博客 522

shiro反序列化漏洞原理分析以及漏洞复现(CVE-2016-4437)

shiro-550主要是由shiro的rememberMe内容反序列化导致的命令执行漏洞,造成的原因是默认加密密钥是硬编码在shiro源码中,任何有权访问源代码的人都可以知道默认加密密钥。于是攻击者可以创建一个恶意对象,对其进行序列化、编码,然后将其作为cookie的rememberMe字段内容发送,Shiro 将对其解码和反序列化,导致服务器运行一些恶意代码。特征:cookie中含有rememberMe字段修复建议:更新shiro到1.2.4以上的版本。不使用默认的加密密钥,改为随机生成密钥。

zkaqlaoniao的博客 642

ACM算法模板 · 一些常用的算法模板-模板合集(打比赛专用)

萌新常用的都在这了,本萌新的模板集。

张天枭の博客 5万+

别再只用默认密钥了!手把手教你复现Shiro反序列化漏洞(CVE-2016-4437)并理解其核心原理

本文深入解析Apache Shiro框架的CVE-2016-4437反序列化漏洞,从RememberMe机制的AES密钥安全问题出发,详细讲解漏洞复现过程及核心原理。通过分析加解密流程、靶场验证技巧及修复方案,帮助开发者理解默认配置的安全风险,并提供密钥管理的最佳实践,提升系统安全防护能力。

weixin_30631587的博客 284

汽车软件工程师必看:ASPICE流程实战指南(附完整产物清单)

本文为汽车软件工程师提供ASPICE流程实战指南,详细解析如何搭建合规开发环境、各阶段文档产出清单及工具链整合策略。通过实战案例和模板资源,帮助团队高效实施ASPICE标准,提升软件开发质量与效率。

weixin_29230805的博客 472

【Zephyr 系列 29】低功耗调试指南:电流测量、系统睡眠与功耗分析

Zephyr低功耗调试指南(150字摘要) 针对物联网设备续航需求,本文解析Zephyr低功耗调试方法:1️⃣ 机制:启用PM子系统和tickless idle,配置睡眠策略;2️⃣ 测量:推荐功耗分析仪捕捉μA级电流波动;3️⃣ 优化:管理唤醒源(如GPIO/RTC)、调整BLE广播/连接参数,挂起闲置外设;4️⃣ 分析:建立功耗文档,对比不同模式电流(如待机0.6mA vs广播3.2mA)。强调低功耗需系统性设计,初期即需纳入测试流程。下期将探讨Zephyr OTA升级实现。

hemoparrot的专栏 1181

Apache Shiro反序列化漏洞(CVE-2016-4437)修复指南:从漏洞原理到安全配置

本文深度剖析了Apache Shiro反序列化漏洞(CVE-2016-4437)的根源与危害,该漏洞源于RememberMe功能的硬编码密钥。文章提供了从紧急缓解、标准修复到深度防御的完整安全配置指南,包括升级版本、生成安全密钥、配置防护策略及建立监控体系,帮助开发者彻底修复漏洞并构建长期免疫能力。

weixin_29323493的博客 359

Qt Quick/QML入门到精通_专栏demo对应文章目录(目前50个左右demo/长期更新)

自定义图标下拉列表框的效果如下所示:自定义三态按钮的效果如下所示:传送门:53.qt quick-自定义三态按钮、自定义图标下拉列表框_诺谦的博客-优快云博客传送门:59.qt quick-qml调色板(颜色取色器)实现、自定义QQuickStyle样式_诺谦的博客-优快云博客63.qt quick-QML侧边滑动栏(不需要任何图片资源,支持自定义左右方向和大小)_诺谦的博客-优快云博客_qt实现好看侧边栏。...

抵抗时间扭曲,坚持做一件有意义的事 2万+

[CVE-2016-4437] Apache Shiro 安全框架反序列化漏洞复现与原理详细分析

Apache Shiro是一个强大且易用的 Java安全框架,执行身份验证、授权、密码和会话管理。shiro 相比于 springsecurity 简单许多,官方号称 10 分钟就能学会。shiro 反序列化漏洞是 Java 经典漏洞,于2016年被挖掘出来,到现在依旧很多系统存在该漏洞,非常值得学习,对加深 shiro 认证机制的理解以及java代码审计颇有帮助。

Specif1c的博客 5750

AI学习指南RAG篇(19)-API调用与集成

通过上述API调用示例,您可以方便地将RAGFlow与其他系统集成,实现数据集管理、文档处理、会话管理等功能。希望本文的介绍能帮助您更好地理解和使用RAGFlow的API。

俞兆鹏的博客 2548

Dify之八添加各种在线大模型

Dify之八添加各种在线大模型

yilvyangguang520的博客 941

【shiro】Apache Shiro 1.2.4 反序列化漏洞(CVE-2016-4437 )

介绍shiro反序列化漏洞的原理、流程和综合利用工具的使用。

Fighting_hawk的博客 6271

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

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

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

mooyuan的网络安全博客 3102

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

上一篇: WAF的定义、原理、形态、部署方式、功能与常见问题
下一篇: 网络安全渗透测试—[端口扫描/常见端口服务]
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值