Shiro550 反序列化漏洞(CVE-2016-4437)

目录

Shiro介绍

漏洞原理

判断是否存在漏洞

利用ShiroExploit工具执行命令:

利用shiro-exploit工具+综合利用工具执行命令:


这一篇是参考别的师傅的好文章对Shiro550反序列化漏洞的学习和练习

Shiro介绍

Apache Shiro是一个强大易用的java安全框架,提供了认证、授权、加密和会话管理等功能。Shiro框架直观、易用,同时也能提供健壮的安全性。

漏洞原理

在Apache shiro的框架中,执行身份验证时提供了一个记住密码的功能(RememberMe),如果用户登录时勾选了这个选项,用户的请求数据包中将会在cookie字段多出一段数据,这一段数据包含了用户的身份信息,且是经过加密的。

加密的过程是:

用户信息=>序列化=>AES加密 (这一步需要用密钥key) =>base64编码=>添加到RememberMe Cookie字段。

勾选记住密码之后,下次登录时,服务端会根据客户端请求包中的cookie值进行身份验证,无需登录即可访问。

那么显然,服务端进行对cookie进行验证的步骤就是:

取出请求包中rememberMe的cookie值 => Base64解码=>AES解密 (用到密key) =>反序列化。

勾选rememberMe后,POST请求包中会有rememberMe字段,而服务端响应包的Set-Cookie中会有rememberMe=deleteMe字段,同时会生成对应的rememberMe字段。

简单来说:

知道密钥,因为Apache提供的密钥写死在代码里面,可以借此恶意构造cookie数据。

攻击者可以创建一个恶意对象,对其进行序列化、编码,然后将其作为cookie的rememberMe字段内容发送,Shiro 将对其解码和反序列化,导致服务器运行一些恶意代码。

判断是否存在漏洞

1.未登录的情况下,请求包的cookie中没有rememberMe字段,返回包set-Cookie里也没有deleteMe字段

2.登录失败的话,不管有没有勾选RememberMe字段,返回包都会有 rememberMe= deleteMe 字段

3.不勾选RememberMe,登录成功的话,返回包set-Cookie里有rememberMe=deleteMe字段,但是之后的所有请求中Cookie都不会有RememberMe字段

4.勾选RememberMe,登录成功的话,返回包seLCookie里有rememberMe=deleteMe字段,还会有remember 字段,之后的所有请求中Cookie都会有rememberMe字段

5.或者可以在cookie后面自己加一个rememberMe=1.看返回包有没有rememberMe= deleteMe

移动到如下路径:

/root/vulhub-master/shiro/CVE-2016-4437

然后使用docker-compose up -d来拉取环境:

拉取完成后可以访问一下web页面:

可以看到是一个登录页面 

我们抓包查看一下

在返回包当中发现存在rememberMe=deleteMe字样,可以大概确定有配置shiro,下面我们就可以进行漏洞利用了


利用ShiroExploit工具执行命令:

Releases · feihong-cs/ShiroExploit-Deprecated · GitHub

进入工具后,输入漏洞的URL:

点击下一步会让我们选择漏洞的检测方式,我们可以直接选择下一步

然后成功的检测到了漏洞,我们可以执行命令

可以看到命令成功的执行了

利用shiro-exploit工具+综合利用工具执行命令:

GitHub - Ares-X/shiro-exploit: Shiro反序列化利用工具,支持新版本(AES-GCM)Shiro的key爆破,配合ysoserial,生成回显Payload

这个工具是一个命令行工具,需要有python环境,我们可以通过这个工具获取到key,然后在添加到其他shiro利用工具中来进行漏洞利

获取key

加入到漏洞利用工具中进行漏洞利用:

注:也可以只使用该工具,也可以进行密钥的破解

执行命令:

可以看到成功的执行命令了

 参考文章:

Shiro550与shiro721反序列化原理及复现解析 - FreeBuf网络安全行业门户

shiro反序列化漏洞原理分析以及漏洞复现 - FreeBuf网络安全行业门户

java经典漏洞复现(基于vulhub) - FreeBuf网络安全行业门户

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/725741.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

ASP.NET MVC企业级程序设计(增删,页面水平排列,字符串拼接,非空,添加框内默认提示)

目录 题目: 实现过程 控制器代码 DAL BLL Index Deile 题目: 实现过程 控制器代码 using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.Mvc; using MvcApplication1.Models;namespac…

Tensorflow入门实战 T05-运动鞋识别

目录 一、完整代码 二、训练过程 (1)打印2行10列的数据。 (2)查看数据集中的一张图片 (3)训练过程(训练50个epoch) (4)训练结果的精确度 三、遇到的问…

Docker环境离线安装

Docker环境离线安装 下载下列.deb包 sudo *.deb

【PyQt5】python桌面级应用开发:PyQt5介绍,开发环境搭建快速入门

✨✨ 欢迎大家来到景天科技苑✨✨ 🎈🎈 养成好习惯,先赞后看哦~🎈🎈 🏆 作者简介:景天科技苑 🏆《头衔》:大厂架构师,华为云开发者社区专家博主,…

天津媒体邀约,及媒体名单?

传媒如春雨,润物细无声,大家好,我是51媒体网胡老师。 媒体宣传加速季,100万补贴享不停,一手媒体资源,全国100城线下落地执行。详情请联系胡老师。 天津作为中国北方的重要城市,拥有丰富的媒体资…

Jenkins+K8s实现持续集成(二)

部署前呢,要先把jenkins搭建好。 同时呢已经有了k8s的环境。 基于以上两步已经有了的情况,继续要实现jenkinsk8s持续集成,需要先准备四个文件: Dockerfile首先要准备好一个Dockerfile文件,用于构建Docker镜像的文本…

最新版本IntelliJ IDEA安装与“坤活”使用

最新版本IntelliJ IDEA安装与“科学”使用 IntelliJ IDEA安装与坤活下载安装坤活idea1.将下面两个压缩文件解压到安装位置,注意路径不要包含中文空格等特殊符号2.双击 install-all-users.vbs ,然后点击确定,等到出现 Done的弹窗3. 打开idea复…

函数依赖集等价、最小函数依赖集

一、函数依赖集等价 1、定义 假设F、G为一个关系模式上的两个函数依赖集,若,则称F和G是等价的,也可称F和G 互相覆盖。 2、判断 (1)引理3: 的充分必要条件是且 (2)两步走&…

密码学及其应用——为什么选择接近的质数因子对RSA加密算法不安全?

RSA加密算法是一种广泛使用的非对称加密算法,它的安全性依赖于大整数分解的难度。具体来说,RSA算法生成的公钥包含一个大整数N,这是两个大质数p和q的乘积。然而,如果这两个质数p和q太接近,则可以相对容易地对N进行因式…

Study--Oracle-04-SQL练习

一、SQL语句思维导图 二、SQL练习 -- 以employee_id 为排序,列出前5个人 -- FETCH select employee_id,first_name from employees order by employee_id FETCH FIRST 5 rows only; -- 以employee_id 为排序,从第6个人开始 到第10个人 -- offset …

计算机组成原理---Cache的基本工作原理习题

对应知识点: Cache的基本原理 1.某存储系统中,主存容量是Cache容量的4096倍,Cache 被分为 64 个块,当主存地址和Cache地址采用直接映射方式时,地址映射表的大小应为()(假设不考虑一致维护和替…

【Redis】如何保证缓存和数据库的一致性

目录 背景问题思路 三个经典的缓存模式Cache-Aside读缓存写缓存为什么是删除旧缓存而不是更新旧缓存?为什么不先删除旧的缓存,然后再更新数据库? 延迟双删如何确保原子性 Read-Through/Write-ThroughRead-ThroughWrite-Through Write Behind …

Ubuntu22.04 下安装Curl库

1. apt 安装: sudo apt-get install curl 2. 官网压缩包: 下载地址:curl downloads wget https://curl.haxx.se/download/curl-7.78.0.tar.gz tar -xzvf curl-7.78.0.tar.gz cd curl-7.78.0 ./configure --with-openssl make sudo make i…

ubuntu系统上快速直接获取ip地址

文章目录 前言总结 前言 ubuntu系统上查看ip地址 $ hostname -I示例输出: 192.168.1.10总结 作者:加辣椒了吗? 简介:憨批大学生一枚,喜欢在博客上记录自己的学习心得,也希望能够帮助到你们!

基于若依的ruoyi-nbcio流程管理系统增加所有任务功能(一)

更多ruoyi-nbcio功能请看演示系统 gitee源代码地址 前后端代码: https://gitee.com/nbacheng/ruoyi-nbcio 演示地址:RuoYi-Nbcio后台管理系统 http://218.75.87.38:9666/ 更多nbcio-boot功能请看演示系统 gitee源代码地址 后端代码: h…

CMake个人理解和使用

100编程书屋_孔夫子旧书网 前言 CMake是一个构建工具,通过它可以很容易创建跨平台的项目。通常使用它构建项目要分两步,通过源代码生成工程文件,通过工程文件构建目标产物(可能是动态库,静态库,也可能是可执行程序)。使用CMake的一个主要优势是在多平台或者多人协作的…

Python学习打卡:day10

day10 笔记来源于:黑马程序员python教程,8天python从入门到精通,学python看这套就够了 目录 day1073、文件的读取操作文件的操作步骤open()打开函数mode常用的三种基础访问模式读操作相关方法read()方法readlines()方法readline()方法for循…

Golang | Leetcode Golang题解之第168题Excel表列名称

题目&#xff1a; 题解&#xff1a; func convertToTitle(columnNumber int) string {ans : []byte{}for columnNumber > 0 {columnNumber--ans append(ans, Abyte(columnNumber%26))columnNumber / 26}for i, n : 0, len(ans); i < n/2; i {ans[i], ans[n-1-i] ans[n…

VSCode 安装NeoVim扩展(详细)

目录 1、安装NeoVim扩展 2、windows安装Neovim软件 3、优化操作相关的配置&#xff1a; 5、Neovim最好的兼容性配置 6、技巧和特点 6.1 故障排除 6.2、Neovim 插件组合键设置 6.3、跳转列表 1、安装NeoVim扩展 在扩展商店搜索NeoVim&#xff0c;安装扩展 2、windows安装…