【JavaWeb】CVE-2016-4437 Shiro反序列化漏洞分析及代码审计
Shiro反序列化漏洞分析及代码审计
漏洞简介
Apache Shiro是一个强大且易用的Java安全框架,执行身份验证、授权、密码和会话管理。
Apache Shiro默认使用了CookieRememberMeManager,用户登录成功后会生成经过加密并编码的cookie,在服务端对rememberMe的cookie值,先base64解码然后AES解密再反序列化,就导致了反序列化RCE漏洞。
漏洞影响
Apache Shiro < 1.2.4
漏洞分析
这里是直接从github拉下来得,里面有样例,拿样例复现即可
先在RememberMeManager.class中打下断点,开时调试
分析登录流程
登录成功后,判定是设置了rememberMe
开始对验证信息进行梳理
- 先进行了反序列化
- 然后进行AES加密
- 发现密钥是硬编码在代码中的
- aes加密后,再进行了一次b64编码
- 将上述的base64字符串通过响应头设置到本地的cookie中
- 添加set-cookie字段
- 完成cookie设定,达成rememberMe功能
整个过程
1.序列化用户身份"root",得到值 A;
2.对 root 的序列化值 A 进行 AES 加密(密钥为硬编码的常量),得到值 B;
3.base64 编码上述计算的结果 B,得到值 C;
4.将值 C 设置到 response 响应包中 cookie 的 rememberme 字段。- 先进行了反序列化
继续分析验证功能
- 在DefaultSecurityManager.class#getRememberedIdentity下断
- 分析过后就是上述的逆过程
- 在DefaultSecurityManager.class#getRememberedIdentity下断
所以,我们只要知道aes密钥就可以伪造rememberMe的值,从而达成反序列化。而Apache Shiro < 1.2.4,aes密钥是被硬编码的,所以相当于所有的条件都满足了,开始干。
漏洞利用
直接用shiro_exploit2.0一把梭
shiro_exploit2.0
漏洞修复
- 升级 shiro 到最新版本,不采用硬编码的方式
- 如果在配置里配置了密钥,那么请一定不要使用网上的密钥, 一定不要!请自己base64一个AES的密钥,或者利用官方提供的方法生成密钥:
【JavaWeb】CVE-2016-4437 Shiro反序列化漏洞分析及代码审计的更多相关文章
- Apache Shiro 反序列化漏洞分析
Shiro550 环境搭建 参考:https://www.cnblogs.com/twosmi1e/p/14279403.html 使用Docker vulhub中的环境 docker cp 将容器内 ...
- Java安全之Shiro 550反序列化漏洞分析
Java安全之Shiro 550反序列化漏洞分析 首发自安全客:Java安全之Shiro 550反序列化漏洞分析 0x00 前言 在近些时间基本都能在一些渗透或者是攻防演练中看到Shiro的身影,也是 ...
- Shiro 550反序列化漏洞分析
Shiro 550反序列化漏洞分析 一.漏洞简介 影响版本:Apache Shiro < 1.2.4 特征判断:返回包中包含rememberMe=deleteMe字段. Apache Shiro ...
- 学习笔记 | java反序列化漏洞分析
java反序列化漏洞是与java相关的漏洞中最常见的一种,也是网络安全工作者关注的重点.在cve中搜索关键字serialized共有174条记录,其中83条与java有关:搜索deserialized ...
- Java反序列化漏洞分析
相关学习资料 http://www.freebuf.com/vuls/90840.html https://security.tencent.com/index.php/blog/msg/97 htt ...
- Java安全之Cas反序列化漏洞分析
Java安全之Cas反序列化漏洞分析 0x00 前言 某次项目中遇到Cas,以前没接触过,借此机会学习一波. 0x01 Cas 简介 CAS 是 Yale 大学发起的一个开源项目,旨在为 Web 应用 ...
- Fastjson 1.2.22-24 反序列化漏洞分析
目录 0x00 废话 0x01 简单介绍 FastJson的简单使用 0x02 原理分析 分析POC 调试分析 0x03 复现过程 0x04 参考文章 0x00 废话 balabala 开始 0x01 ...
- 应急响应--记录一次漏洞紧急处理中意外发现的挖矿木马(Shiro反序列化漏洞和ddg挖矿木马)
背景 某公司线上服务器意外发现一个Apache Shiro 反序列化漏洞,可以直接GetShell.出于做安全的谨慎,马上出现场应急,确认漏洞.该漏洞存在在cookie字段中的rememberMe字段 ...
- ref:Java安全之反序列化漏洞分析(简单-朴实)
ref:https://mp.weixin.qq.com/s?__biz=MzIzMzgxOTQ5NA==&mid=2247484200&idx=1&sn=8f3201f44e ...
随机推荐
- mysql 字符串转日期及其他日期转换
-- 字符串转日期 select str_to_date('2019/1/1', '%Y/%m/%d') -- 2019-01-01 SELECT STR_TO_DATE(concat(Cyear,' ...
- 13 - Vue3 UI Framework - 完善官网
为了提升用户体验,今天我们来对 jeremy-ui 官网做一个优化 返回阅读列表点击 这里 Markdown 解析支持 ️ 习惯用 markdown 语法编辑,所以我们增加项目源码对 markdown ...
- Add File as a Link on Visual Studio
https://stackoverflow.com/questions/18963750/add-file-as-a-link-on-visual-studio-debug-vs-publish Ev ...
- react 结合gitte 创建项目(详情步骤)
创建项目第一步 基本搭建 在创建之前,需要有一个git 仓库,我们要把项目搭建到git 中 目录介绍 cd 到某个盘 mkdir workspace 创建workspace文件夹 cd works ...
- git clone 报错:SSL certificate prob lem: self signed certificate
先执行: git config --global http.sslVerify false 然后重新执行git clone 命令即可
- Linux(Centos)安装git
直接使用yum源安装git 安装的版本是1.8.3.1 yum install -y git 安装完成后,查看版本 [root@master ~]# git --version git version ...
- cmake之Visual studio无法显示头文件
本文演示cmake版本:3.18 1. 问题 使用cmake创建的Visual Studio 项目都没有显示头文件, 比如: 可以清楚的看见,项目lib_pipe没有显示头文件 2. 配置CMakeL ...
- 1076 - Get the Containers
1076 - Get the Containers PDF (English) Statistics Forum Time Limit: 2 second(s) Memory Limit: 32 ...
- 基于MCRA-OMLSA的语音降噪(二):实现
上篇文章(基于MCRA-OMLSA的语音降噪(一):原理)讲了基于MCRA-OMLSA降噪的原理,本篇讲怎么做软件实现.软件实现有多种方式.单纯看降噪效果可用python,因为python有丰富的库可 ...
- C# 编写 Windows 动态桌面软件实现(一)之桌面交互功能
DreamScene2 1.3 版本已经发布了,现在支持鼠标和桌面交互功能.这个功能不会影响性能,基本不占用 CPU.这个功能让我对 Windows 消息机制有了更深入的理解,在这篇博客中我会详细介绍 ...