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 漏洞利用方式
(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,防御的核心就一句话:别让攻击者能预测你的密钥,也别轻易反序列化不可信数据。 具体措施如下:
- 升级 Shiro 版本到 1.2.4 及以上,修复已知反序列化漏洞。
- 修改默认 AES 密钥,换成足够复杂、随机、不公开的密钥,让攻击者无法预判。
- 关闭不必要的 RememberMe 功能,业务不需要"记住我"就直接关掉。
- 部署 WAF(Web 应用防火墙),检测并拦截异常的 RememberMe Cookie 请求。
- 遵循最小权限原则,降低应用运行账号的权限,缩小被攻破后的影响范围。
6. 结尾总结
复盘一下:Shiro550 的本质,就是"记住我"功能把用户信息序列化加密后存进 Cookie,而 AES 密钥默认写死在源码里,导致攻击者可以自己构造携带恶意代码的序列化对象,加密编码后放进 RememberMe Cookie,服务端解密后不做任何过滤直接反序列化,从而触发远程代码执行。
反序列化漏洞最大的风险点,就是反序列化了不可信的数据。安全防护的底线永远是:对外来的输入保持怀疑,永远不要信任。
最后
关于网络安全技术储备
学好网络安全不论是就业还是做副业赚钱都不错,但要学会网络安全还是要有一个学习规划。最后大家分享一份全套的网络安全学习资料,给那些想学习网络安全的小伙伴们一点帮助!
对于0基础小白入门:
如果你是零基础小白,想快速入门网络安全是可以考虑的。
一方面是学习时间相对较短,学习内容更全面更集中。
二方面是可以找到适合自己的学习方案
包括:网安成长学习路线图、SRC&黑客文档、护网行动、黑客必读书单、面试题、学习视频等教程。带你从零基础系统性的学好网络安全!
需要的可以微信扫描下方优快云官方认证二维码免费领取【保证100%免费】

👉1.成长路线图&学习规划👈
要学习一门新的技术,作为新手一定要先学习成长路线图,方向不对,努力白费。
对于从来没有接触过网络安全的同学,我们帮你准备了详细的学习成长路线图&学习规划。可以说是最科学最系统的学习路线,大家跟着这个大的方向学习准没问题。

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

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

黑客资料由于是敏感资源,这里不能直接展示哦!(全套教程文末领取哈)
👉4.护网行动资料👈
其中关于HW护网行动,也准备了对应的资料,这些内容可相当于比赛的金手指!

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

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

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

3323



被折叠的 条评论
为什么被折叠?



