shiro反序列化漏洞综合利用工具
Apache Shiro 的序列 rememberMe cookie 反序列化漏洞,最早在 2016 年被曝光,化漏合利但真正让它在安全圈“出圈”的洞综,是用工 2020 年前后大量 Spring Boot 应用被批量打穿。根本原因不复杂:Shiro 默认用硬编码的序列 AES 密钥加密 rememberMe 字段,攻击者拿到密钥后可以构造恶意序列化数据,化漏合利服务端反序列化时直接执行任意代码。洞综问题在于,用工很多开发根本不知道自己的序列应用用了 Shiro,或者知道用了但从没改过默认密钥。化漏合利
我见过一个真实案例。洞综某中型企业的用工 OA 系统,前端登录页有个“记住我”勾选框。序列渗透测试时,化漏合利同事用 Shiro 反序列化工具跑了一遍,洞综直接弹回一个 root shell。运维那边懵了——他们以为“记住我”只是存个用户名到 cookie 里。实际上 Shiro 会把整个用户对象序列化后加密塞进 cookie,密钥就是默认的 kPH+bIxk5D2deZiIxcaaaA==。这个密钥在 GitHub 上随便搜,几百个仓库里都有。
于是就有了“综合利用工具”这个东西。它不是单一漏洞利用脚本,更像一个流水线:先检测目标是否使用 Shiro,再爆破 rememberMe 的加密密钥,最后根据密钥构造 payload 打命令执行或内存马。早期工具比如 shiro_attack 只支持有限几条链,现在像 ShiroExploit、shiro_tool 已经集成了 CB1、CCK1、CommonsBeanutils 等多条利用链,甚至能绕 WAF 做分块传输。
工具好用归好用,但坑也不少。第一,密钥爆破依赖字典,如果目标改了默认密钥又不在字典里,直接卡死。第二,有些环境用了 Shiro 但没开 rememberMe 功能,检测阶段就会误报。第三,也是我最想吐槽的——很多工具把“检测到 Shiro”和“存在漏洞”划等号。实际上 Shiro 版本高于 1.2.4 且没配硬编码密钥,根本打不动。我见过有人拿工具扫了一堆站,报告里写“高危漏洞”,结果全是误报,甲方差点投诉。
从防御角度看,修这个漏洞就两步:升级 Shiro 到 1.7.1 以上,或者把默认 AES 密钥换成随机生成的。但现实是,很多老系统不敢升级,怕破坏兼容性。那就退而求其次,在 WAF 里拦截 rememberMe cookie 中的异常 Base64 长度,或者直接禁用 rememberMe。可惜的是,我接触过的中小型项目里,超过一半连 Shiro 版本都没查过。
工具本身没有好坏。写 ShiroExploit 的那个作者,代码里甚至加了“请勿用于非法用途”的提示。真正的问题是,大量开发把“记住我”当成一个无关紧要的功能,随手勾选,从不检查依赖。反序列化漏洞只是结果,根因是安全意识的缺失。下次你看到登录页那个小方框,不妨多想一步:它背后到底序列化了什么?
(责任编辑:综合)














