Apache Shiro 漏洞复现

文章目录

  • Apache Shiro 漏洞复现
    • 1. Apache Shiro 1.2.4 反序列化漏洞
      • 1.1 漏洞描述
      • 1.2 漏洞原理
      • 1.3 漏洞复现
        • 1.3.1 环境启动
      • 1.4 漏洞利用
      • 1.5 修复方案

Apache Shiro 漏洞复现

链接地址:Vulhub - Docker-Compose file for vulnerability environment

1. Apache Shiro 1.2.4 反序列化漏洞

1.1 漏洞描述

说明内容
漏洞编号CVE-2016-4437
漏洞名称Apache Shiro 1.2.4 反序列化漏洞
漏洞评级高危
影响范围Apache Shiro 1.2.4
漏洞描述Apache Shiro 1.2.4及以前版本中,加密的用户信息序列化后存储在名为remember-me的Cookie中。攻击者可以使用Shiro的默认密钥伪造用户Cookie,触发Java反序列化漏洞,进而在目标机器上执行任意命令。
修复方案打补丁,上设备,升级组件

1.2 漏洞原理

Apache Shiro 1.2.4及以前版本中,Apache Shiro默认使用了CookieRememberMeManager,其处理cookie的流程是:得到rememberMe的cookie值 > Base64解码–>AES解密–>反序列化。然而AES的密钥是硬编码的,就导致了攻击者可以构造恶意数据造成反序列化的RCE漏洞。

1.3 漏洞复现

1.3.1 环境启动

image-20230908200140028

说明:这里我修改了docker-compose.yml配置文件的端口号。

服务启动后,访问http://your-ip:8090可使用admin:vulhub进行登录。

image-20230908205513086

登录成功

image-20230908200406396
使用bp进行抓包

image-20231010214005259

登录后的响应包,中的Set-Cookie字段,字段内容rememberMe=deleteMe,那么很可能Shiro框架,并且存在Shiro反序列化漏洞。

1.4 漏洞利用

利用Shiro工具进行链接

在URL中输入登录界面的路径然后点击密钥爆破,检测是否存在Shiro框架。

image-20230908203605728

查看利用链,测试哪一个CC链可以利用。

image-20230908203646713

然后输入命令执行即可

image-20230908203800371

1.5 修复方案

  1. 确定自己使用的shiro版本要高于1.2.4。

  2. 在代码中全局搜索 “setCipherKey(Base64.decode(” 关键字,或者"setCipherKey"方法,Base64.decode()中的字符串就是shiro的密钥,要确保该密钥的安全性,千万不要使用公开的密钥。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

提升代码重用性:模板设计模式在实际项目中的应用

在软件开发中,我们经常面临着相似的问题,需要使用相同的解决方法。当我们希望将这种通用的解决方法抽象出来,并在不同的情境中重复使用时,就可以使用设计模式中的模板模式(Template Pattern)。模板模式是一…

基于单片机智能汽车仪表设计系统

基于单片机的汽车智能仪表的设计 摘要:汽车的汽车系统。速度测量以及调速是我们这次的设计所要研究的对象,本次设计的基础核心的模块就是单片机,其应用的核心的控制单元就是stc89c52单片机,用到的测速模块是霍尔传感器&#xff0c…

十大排序算法Java实现及时间复杂度

文章目录 十大排序算法选择排序冒泡排序插入排序希尔排序快速排序归并排序堆排序计数排序基数排序桶排序时间复杂度 参考资料 十大排序算法 选择排序 原理 从待排序的数据元素中找出最小或最大的一个元素,存放在序列的起始位置, 然后再从剩余的未排序元…

时间序列分析基础篇

**时间序列分析(time series analysis)是量化投资中的一门基本技术。时间序列是指在一定时间内按时间顺序测量的某个变量的取值序列。**比如变量是股票价格,那么它随时间的变化就是一个时间序列;同样的,如果变量是股票…

如果看待程序员不写注释

程序员对代码注释可以说是又爱又恨又双标……你是怎么看待程序员不写注释这一事件的呢? 程序员们对于注释的态度就像是吃饭时的调味品选择,有人喜欢辣椒酱一抹到底,有人则喜欢清淡一点。有些人可能对别人写的代码不写注释感到恼火&#xff0…

react-antd-admin 后台管理系统,就这样应运而生

react-admin 🎉 A magical react admin 目前就是从零开始使用 webpack 搭建环境,用到是 webpack5 来搭建 react 环境,使用到了以下这些插件 babel-loader 用来转义 es6 -> es5copy-webpack-plugin 用来拷贝一些文件css-loader 加载 cssless-loader 将 less 转成 cssst…

HelloKitty 代码 Python

话不多说直接上代码,绘制速度慢,录屏之后调倍速 import math import turtle as t# 计算长度、角度 t1:画笔对象 r:半径 angle:扇形(圆形)的角度 def myarc(t1, r, angle):arc_length = 2 * math.pi * r * angle

asp.net会议预约管理系统VS开发sqlserver数据库web结构c#编程Microsoft Visual Studio

一、源码特点 asp.net 会议预约管理系统 是一套完善的web设计管理系统,系统具有完整的源代码和数据库,系统主要采用B/S模式开发。开发环境为vs2010,数据库为sqlserver2008,使用c#语 言开发 asp.net 会议预约管理系统 二、…

settings.xml的文件配置大全

settings.xml 文件中最常配置的还是这几个标签 localRepository和mirrors settings.xml文件官方文档地址 <settings xmlns"http://maven.apache.org/SETTINGS/1.0.0" xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"ht…

vue学习(1)——基本指令

Vue指令—通过vue实现常见的网页效果 1、内容绑定&#xff0c;事件绑定 &#xff08;1&#xff09;v-text设置标签的文本值/内容&#xff08;textContent&#xff09; 默认写法会替换全部内容&#xff0c;使用差值表达式可以替换指定内容&#xff0c;内部支持表达式。可简写为{…

windows下cmd的删除命令

在Windows的命令提示符&#xff08;Command Prompt&#xff09;中&#xff0c;删除文件或目录的命令是del&#xff08;删除文件&#xff09;和rmdir&#xff08;删除目录&#xff09;。以下是这两个命令的使用方式&#xff1a; 删除文件&#xff08;del&#xff09;: 使用del命…

【Java学习之道】日期与时间处理类

引言 在前面的章节中&#xff0c;我们介绍了Java语言的基础知识和核心技能&#xff0c;现在我们将进一步探讨Java中的常用类库和工具。这些工具和类库将帮助我们更高效地进行Java程序开发。在本节中&#xff0c;我们将一起学习日期与时间处理类的使用。 一、为什么需要日期和…

uniapp中input的disabled属性

uniapp中input的disabled属性&#xff1a; 小程序中兼容性好&#xff1b; 在H5中兼容性差&#xff1b; 在H5中使用uniapp的input的disabled属性&#xff0c;属性值只能是true或false&#xff0c;如果为0&#xff0c; "都会为true&#xff1b; <input class"in…

Java从resources文件下载文档,文档没有后缀名

业务场景&#xff1a;因为公司会对excel文档加密&#xff0c;通过svn或者git上传代码也会对文档进行加密&#xff0c;所以这里将文档后缀去了&#xff0c;这样避免文档加密。 实现思路&#xff1a;将文档去掉后缀&#xff0c;放入resources下&#xff0c;获取输入流&#xff0…

启动Java应用的黑魔法:初始化性能解密@PostConstrut,InitialzingBean,init-method,BeanPostProcessor

我们在项目中经常会遇到启动时做一些逻辑的处理&#xff0c;比如配置信息的预加载&#xff0c;缓存信息的预加载等等&#xff0c;那都有哪些方法了&#xff0c;我们一起来探讨一下&#xff1a; 1. 方式 1. 构造方法初始化&#xff1a; 使用构造方法进行对象的基本属性初始化。…

【Leetcode】207.课程表

一、题目 1、题目描述 你这个学期必须选修 numCourses 门课程,记为 0 到 numCourses - 1 。 在选修某些课程之前需要一些先修课程。 先修课程按数组 prerequisites 给出,其中 p r e r e q u i s i t e s [ i ] = [ a i , b

深度学习验证码项目

项目代码&#xff1a; GitHub - kerlomz/captcha_trainer: [验证码识别-训练] This project is based on CNN/ResNet/DenseNetGRU/LSTMCTC/CrossEntropy to realize verification code identification. This project is only for training the model. GitHub - Python3WebSpi…

OpenCV项目开发实战--详细介绍如何进行图像平移和旋转含原理讲解+实现源码

如今,图像编辑变得越来越流行,因为手机具有这种内置功能,可以让您对图像进行裁剪、旋转和执行更多操作。在这篇博文中,我们将使用 OpenCV 探索图像转换和图像旋转。 基本图像转换操作 图像平移和旋转是图像编辑中最基本的操作之一。两者都属于更广泛的仿射变换类别。因此…

win10搭建gtest测试环境+vs2019

首先是下载gtest&#xff0c;这个我已经放在了博客上方资源绑定处&#xff0c;这个适用于win10vs版本&#xff0c;关于liunx版本的不能用这个。 或者百度网盘链接&#xff1a; 链接&#xff1a;https://pan.baidu.com/s/15m62KAJ29vNe1mrmAcmehA 提取码&#xff1a;vfxz 下…

ATF(TF-A)之UBSAN动态代码分析

安全之安全(security)博客目录导读 目录 一、UBSAN简介 二、TF-A中UBSAN配置选项 一、UBSAN简介 未定义行为消毒器(Undefined Behavior Sanitizer&#xff0c;UBSAN)是Linux内核的未定义行为动态检测器。 详细信息可参考&#xff1a;https://github.com/google/kernel-sanit…