Shiro权限绕过漏洞(CVE-2020-1957,CVE-2020-11989、CVE-2020-13933)

news2024/10/7 14:23:12

一、Apache Shiro

Apache Shiro 是一个强大且易用的Java安全框架,能够用于身份验证、授权、加密和会话管理。

二、Shiro漏洞指纹(部分)

1、在请求包的cookie中有remember字段赋任意值
2、返回包中存在set-Cookie:remeberMe=deleteMe

三、受影响版本

Apache Shiro <1.5.2

四、漏洞原理

Shiro框架通过拦截器功能来实现对用户访问权限的控制和拦截。Shiro中常见的拦截器有anon,authc等拦截器。
1.anon为匿名拦截器,不需要登录就能访问,一般用于静态资源,或者移动端接口
2.authc为登录拦截器,需要登录认证才能访问的资源。
用户可以在Shiro.ini编写匹配URL配置,将会拦截匹配的URL,并执行响应的拦截器。从而实现对URL的访问控制,URL路径表达式通常为ANT格式。如下配置,访问 /index.html主页的时候,Shiro将不会对其进行登录判断,anon拦截器不需要登录就能进行访问。而对于/user/xiaoming 等 /user/xiaogang等接口,authc拦截器将会对其进行登录判断,有登录认证才能访问资源。
[urls] /index.html = anon /user/** = authc
Shiro的URL路径表达式为Ant 格式,路径通配符支持 ? * **
? :匹配一个字符
*:匹配零个或多个字符串
** :匹配路径中的零个或多个路径
其中*表示匹配零个或多个字符串,/*可以匹配/hello,但匹配不到/hello/,因为*通配符无法匹配路径。假设/hello接口设置了authc拦截器,访问/hello将会被进行权限判断,如果请求的URI为/hello/呢,/*URL路径表达式将无法正确匹配,放行。然后进入到spring(Servlet)拦截器,spring中/hello 形式和/hello/形式的URL访问的资源是一样的。(从大佬那搬运过来的)

五、漏洞复现

vulhub靶场

命令:docker-compose up -d  (打开靶机)
命令:docker-compose down(关闭靶机)
命令:docker ps (查看镜像)
命令:docker stop ID (关闭镜像)

在这里插入图片描述

点击login需要填写账号密码
在这里插入图片描述
而在url中直接添加路径:/xxx/…;/admin/,即可绕过验证
在这里插入图片描述

六、url请求绕过过程

CVE-2020-1957
客户端请求URL: /xxx/..;/admin/
Shrio 内部处理得到校验URL为 /xxxx/..,校验通过
SpringBoot 处理 /xxx/..;/admin/ , 最终请求 /admin/, 成功访问了后台请求。

CVE-2020-11989
客户端请求URL: /;/test/admin/page
Shrio 内部处理得到校验URL为/,校验通过
SpringBoot最终请求 /admin/page, 成功访问了后台请求。

CVE-2020-13933
客户端请求URL:/admin/;page
Shrio 内部处理得到校验URL为/admin/,校验通过
SpringBoot最终请求 /admin/;page, 成功访问了后台请求。

七、修复建议

升级到最新版本

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

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

相关文章

通过宝塔面板将vue项目放到阿里云服务器(两个vue项目)

前提条件&#xff1a; 端口提前开放所需环境安装好&#xff08;Nginx node…&#xff09;以及打包好的vue文件&#xff08;dist&#xff09; 第一步&#xff1a;上传文件到自定义目录 第二步&#xff1a;在首页找到Nginx软件并配置 第三步&#xff1a;配置具体的配置 这里说…

「雕爷学编程」Arduino动手做(39)——DS18B20温度传感器3

37款传感器与模块的提法&#xff0c;在网络上广泛流传&#xff0c;其实Arduino能够兼容的传感器模块肯定是不止37种的。鉴于本人手头积累了一些传感器和执行器模块&#xff0c;依照实践出真知&#xff08;一定要动手做&#xff09;的理念&#xff0c;以学习和交流为目的&#x…

厦门枫叶时代看电视的新趋势

随着“5G电视”技术的不断普及和城市数字化转型的加速&#xff0c;电视行业也在发生着翻天覆地的变化。在这个背景下&#xff0c;第28届上海电视节推出了高端论坛板块——“白玉兰对话”&#xff0c;共同探讨电视行业的未来发展。其中备受瞩目的中国电视剧发展论坛&#xff0c;…

荔枝派Zero(全志V3S)驱动开发之USB摄像头

文章目录 前言一、内核配置 UVC二、编译内核并烧录到 SD 卡三、上电测试四、mjpeg-streamer 视频流服务器测试1、jpeg 库的移植2、移植 mjpeg-streamer①、前置软件②、下载 mjpg-streamer 源码③、修改 mjpg-streamer 源码④、编译 mjpg-streamer 源码 3、搬移文件到 nfs 目录…

2023/07/23

1. 必须等待所有请求结束后才能执行后续操作的处理方式 方式一&#xff1a; async func () {const p1 await api1();const p2 await api2();const p3 await api3();Promise.all([p1, p2, p3]).then(res > {后续操作...}) }方式二&#xff1a;待补充 2. flex 弹性盒子布…

300M的联通宽带,电脑直接连接光猫只有100M;电脑连接路由器,然后路由器连接光猫却有300M???

1. 现象 300M的联通宽带&#xff0c;用了小半年之后发现网络比以前满&#xff0c;通过https://www.speedtest.cn网站测试发现只有100M 2. 猜测 难道是联通这帮人&#xff0c;偷偷把我网速降到了100M&#xff1f;&#xff1f;&#xff1f; 3. 排查过程 打电话让联通师傅上门排查…

使用 Qt designer

使用 Qt designer 1、配置Qt designer外部工具2、Qt designer&#xff08;Qt 设计师&#xff09;使用2.1 创建保存文件ui2.2 pyuic5.exe 工具 转化成为py文件2.3 直接导入UI文件 2、qrc资源管理器 1、配置Qt designer外部工具 实质就是 Qt\bin 工具中 designer.exe 请查看 PyQ…

Docker 核心概念深度解析:探索容器、镜像和仓库在Docker生态系统中的重要作用和 应用

&#x1f337;&#x1f341; 博主 libin9iOak带您 Go to New World.✨&#x1f341; &#x1f984; 个人主页——libin9iOak的博客&#x1f390; &#x1f433; 《面试题大全》 文章图文并茂&#x1f995;生动形象&#x1f996;简单易学&#xff01;欢迎大家来踩踩~&#x1f33…

Redis应用(3)——Redis的项目应用(二):抢购图书 ---> Redis高并发的问题 分布式锁Redission的使用

目录 引出Redis的高并发问题redis的高并发问题Redisson中间件引入RedissonRedisson配置Redisson应用报错&#xff1a;java.lang.NoClassDefFoundErro Redis的项目应用&#xff08;二&#xff09;&#xff1a;抢购图书1.0版本&#xff0c;Java代码&#xff1a;数据不安全测试方法…

Python+Selenium做自动化测试

一.项目介绍 目的 测试某官方网站登录功能模块可以正常使用 用例 1.输入格式正确的用户名和正确的密码&#xff0c;验证是否登录成功&#xff1b; 2.输入格式正确的用户名和不正确的密码&#xff0c;验证是否登录失败&#xff0c;并且提示信息正确&#xff1b; 3.输入格式正…

H 欢乐颂+J 睡美人

H 欢乐颂 登录—专业IT笔试面试备考平台_牛客网 思路&#xff1a;这个题就是题意比较难懂&#xff0c;思路还挺好想的&#xff0c;其实就是每个点都有几个状态&#xff0c;然后只有存在相同状态的点之间才可以连边&#xff0c;假设点i的状态和为a&#xff0c;点j的状态和为b&a…

Packet Tracer – 配置无线路由器上的端口转发

Packet Tracer – 配置无线路由器上的端口转发 地址分配表 设备 接口 IP 地址 子网掩码 LA 互联网 209.165.134.1 255.255.255.252 LAN 192.168.0.1 255.255.255.0 拓扑图 目标 第 1 部分&#xff1a;配置端口转发 第 2 部分&#xff1a;验证 ServerA 远程连接 …

C语言基础:预处理指令的使用

本文结合工作经验&#xff0c;研究C语言中常见的预处理指令的用法。 文章目录 1 预处理指令概念2 常见的预处理指令2.1 #include包含头文件2.2 #define定义宏2.2.1 类对象宏&#xff08;object-like macro&#xff09;2.2.2 类函数宏&#xff08;function-like macro&#xff…

Docker 镜像的创建

Docker 镜像的创建 创建镜像有三种方法&#xff0c;分别为基于已有镜像创建、基于本地模板创建以及基于Dockerfile创建。 1&#xff0e;基于现有镜像创建 基于现有镜像创建 先使用现有镜像创建容器 docker run 再进入容器进行内容的更新 docker exex 最后提交成新的进行 …

C++语法总结

今天给大家带来的不是某个知识点的解说&#xff0c;而是我花了几个小时的时间&#xff0c;写的一个C的思维导图&#xff0c;希望大家能够喜欢 以上是我对C语法的一些理解&#xff0c;有些可能是我遗漏了&#xff0c;有不对的地方希望大家能够指出&#xff0c;最后&#xff0c;子…

【Atcoder】 [ARC151D] Binary Representations and Queries

题目链接 Atcoder方向 Luogu方向 题目解法 首先需要得到一个性质&#xff1a; 当 X i ≠ X j Xi\ne Xj XiXj 时&#xff0c; i , j i,j i,j 操作的先后顺序可以交换 证明&#xff1a; 可以画一张图&#xff0c;只考虑 Y i Y j 0 YiYj0 YiYj0 的情况&#xff0c;其他情…

力扣256.翻转二叉树(递归/qBFS) 剑指offer 32 从上到下打印二叉树(q BFS)I II III(三道题)

采用队列 class Solution { public:TreeNode* invertTree(TreeNode* root) {queue<TreeNode*> q;if(rootNULL) return root;q.push(root);int i0;while(!q.empty()){TreeNode *curq.front();swap(cur->left,cur->right);if(cur->left) q.push(cur->left);if…

电商系统架构设计系列(六):电商的「账户系统」设计要特别考虑哪些问题?

上篇文章中&#xff0c;我给你留了一个思考题&#xff1a;电商的账户系统&#xff0c;该如何设计&#xff1f; 今天这篇文章&#xff0c;我们来说一下电商的账户系统。 引言 账户系统负责记录和管理用户账户的余额&#xff0c;这个余额就是每个用户临时存在电商的钱&#xff…

Spring整合Mybatis原理

首先介绍一下Mybatis的工作原理 先简略的放两张图&#xff0c;后面的知识结合这两张图比较好理解 Mybatis的基本工作原理 在 Mybatis 中&#xff0c;我们可以使用⼀个接口去定义要执行sql&#xff0c;简化代码如下&#xff1a; 定义⼀个接口&#xff0c;Select 表示要执行查询…

UE 材质实现让远处物体变小

CameraDepthFade: 根据距离摄像机的距离改变值 Fade Length: 从0到1的过渡距离 Fade Offset&#xff1a;小于该值的地方值为1 UV平铺&#xff1a;值越大&#xff0c;平铺的越少&#xff0c;纹理重复显示的越少&#xff0c;视觉效果纹理变大&#xff0c;值越小&#xff0c;平铺…