CVE-2020-1957 漏洞复现

先声明一下,免杀还是会更的,不过中间可能会穿插一下渗透的内容!!!

踩坑点:

在一开始翻阅了CSDN之后,发现不同文章之间存在出入,于是最后去了CVE的官方文档,和参考一些国外的底层代码审计人员的报告,发现原理和CSDN上的部分文章存在出入,但是POC是相同的。最后在参考国外文章之后修正了报告

CVE-2020-1957原理:

在Spring和Shiro(版本<1.5.2)搭配使用的时候会产生权限绕过漏洞。

在黑客传入的POC : https://........./test/..;/admin/ 中,它的框架检验代码如下:

  1. 先通过这段代码,在uri.indexOf(“;”)中,将截断 ;后面的请求。
  2. 然后通过normalize()这个函数,对反斜线进行替换,///.//../ 都替换为 /
  3. getPathWithinApplication()函数的处理,最终Shiro 需要校验的URL 就是 /test/..

然后传入到getChain()函数中进行校验

其中Shiro组件只对/admin/** 这样的path进行了匹配,其他都会放行。

所以我们最原始的请求  https://........./test/..;/admin/  就成功进入到了SpringBoot的校验中(这也是整个漏洞的产生原理

然后SpringBoot就会对这个URL进行检查

又因为SpringBoot的getPathWithinServletMapping()函数通常是返回的Servletpath

所以就直接返回了/admin/ 这样的URL 至此,就饶过了身份验证。

漏洞复现

本次复现环境使用的是Vulhub靶场! 首先对登录界面进行抓包。

这时候我们直接去访问/Admin 这个界面是肯定会有拦截的(因为被Shrio的过滤器匹配到了)

302跟进之后发现,他又跳转到了我们的登录界面

然后我们用我们的POC去访问,成功绕过身份验证。

检测工具:

由于此漏洞并没有特别大的影响,在网上并没有搜索到对应的工具。

本人尝试了使用渊龙SEC曾哥spring工具,以及其他Shiro工具也并未能检测出漏洞。

所以只能收录为一个POC,在后续的武器开发之中能加入这一POC检测。

修复建议:

将Shiro版本进行升级。在新版本的Shiro中GetRequestURL是由contextPath()+ servletPath()+ pathinfo() 这三个函数组合而成,当黑客传入https://........./test/..;/admin/ POC之后,在Shiro的过滤之下,返回的路径将会变成/admin/成功匹配,不会放行,成功防止了权限的绕过。

参考文章:

Shiro权限绕过漏洞分析(CVE-2020-1957) - FreeBuf网络安全行业门户

https://www.cnblogs.com/backlion/p/14055274.html

shiro权限绕过漏洞分析(cve-2020-1957) | Spoock

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

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

相关文章

Linux使用lrzsz实现虚拟机和本机进行文件传输

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、lrzsz是什么&#xff1f;二、使用步骤1.下载lrzsz2.文件传输 前言 提示&#xff1a;这里可以添加本文要记录的大概内容&#xff1a; 使用lrzsz代替xfpt进行…

基于51单片机FM数字收音机设计

基于51单片机FM数字收音机 &#xff08;程序&#xff0b;原理图&#xff0b;PCB&#xff0b;设计报告&#xff09; 功能介绍 具体功能&#xff1a; 该系统利主要由STC89C51单片机、液晶显示器、按键、调频收音模块TEA5767、功放LM386组成。 1.收音芯片采用TEA5767模块&…

# 消息中间件 RocketMQ 高级功能和源码分析(四)

消息中间件 RocketMQ 高级功能和源码分析&#xff08;四&#xff09; 一、 消息中间件 RocketMQ 源码分析&#xff1a;回顾 NameServer 架构设计。 1、RocketMQ 架构设计 消息中间件的设计思路一般是基于主题订阅发布的机制&#xff0c;消息生产者&#xff08;Producer&…

CSS3基本语法

文章目录 一、CSS引入方式二、选择器1、标签选择器2、类选择器3、id选择器4、通配符选择器 三、字体操作1、字体大小2、字体粗细3、字体样式&#xff08;是否倾斜&#xff09;4、字体修改常见字体系列 修改字体系列语法 四、文本操作1、文本缩进2、文本水平对齐方式3、文本修饰…

汽车IVI中控开发入门及进阶(二十七):车载摄像头vehicle camera

前言: 在车载IVI、智能座舱系统中,有一个重要的应用场景就是视频。视频应用又可分为三种,一种是直接解码U盘、SD卡里面的视频文件进行播放,一种是手机投屏,就是把手机投屏软件已视频方式投屏到显示屏上显示,另外一种就是对视频采集设备(主要就是摄像头Camera)的视频源…

智能温室大棚在无土栽培中的应用

在全球范围内&#xff0c;农业面临着前所未有的挑战&#xff0c;包括气候变化、土地资源短缺、水资源匮乏等。为了应对这些问题&#xff0c;智能温室大棚成为了一种创新的解决方案。无土栽培作为现代农业的前沿技术&#xff0c;在智能温室的支持下&#xff0c;展现出了巨大的潜…

QT/基于TCP的服务端实现

代码 widget.cpp #include "widget.h" #include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget),p(new QTcpServer(this))//给服务器指针申请空间 {ui->setupUi(this); }Widget::~Widget() {delete ui; }void W…

室内灰尘对老人小孩危害不容忽视,资深家政推荐除灰尘空气净化器

正所谓“病从口入&#xff0c;尘从窗入”&#xff0c;室内灰尘问题不容小觑。尤其是对老人和小孩来说&#xff0c;灰尘中的有害物质更是威胁健康的重要因素。近期天气炎热&#xff0c;家家户户每天都会开窗通风&#xff0c;然而这也带来了灰尘和毛絮的问题。即使每天打扫&#…

使用asyncua模块的call_method方法调用OPC UA的Server端方法报错:asyncio.exceptions.TimeoutError

使用asyncua模块的call_method方法调用OPC UA的Server端方法报错&#xff1a;asyncio.exceptions.TimeoutError 报错信息如下&#xff1a; Traceback (most recent call last): asyncio.run(main()) File “D:\miniconda3\envs\py31013\lib\asyncio\runners.py”, line 44, in…

PID控制算法学习笔记分享

目录 一、参数设定 二、PID计算公式 三、位置式PID代码实现 四、增量式PID代码实现 五、两种控制算法的优缺点 六、PID算法的改进 一、参数设定 比例系数&#xff08;kp&#xff09;&#xff1a;P项的作用是根据当前误差的大小来产生一个控制量。它直接与误差成正比&#…

Codeforces Round 953 (Div. 2) A - C 题解

因为有事只做了A-C&#xff0c;都比较简单&#xff0c;全是很简单的思维&#xff0c;明天有空还会添加上D&#xff0c;如果有人需要可以明天常来看看&#xff01; 进入正题&#xff1a; A. Alice and Books 题意&#xff1a;给你n个数字&#xff0c;将这些数字分到两堆里&am…

【C++初阶路】--- 类和对象(中)

目录 一、this指针1.1 this指针的引出1.2 this指针的特性1.3. C语言和C实现Stack的对比 二、类的6个默认成员函数三、构造函数3.1 概念3.2 特性 一、this指针 1.1 this指针的引出 如下定义一个日期类Date class Date { public://void InitDate(Date* const this, int year …

APP自动化测试-Appium常见操作之详讲

一、基本操作 1、点击操作 示例&#xff1a;element.click() 针对元素进行点击操作 2、初始化&#xff1a;输入中文的处理 说明&#xff1a;如果连接的是虚拟机&#xff08;真机无需加这两个参数&#xff0c;加上可能会影响手工输入&#xff09;&#xff0c;在初始化配置中…

Java--Arrays类

1.数组的工具java.util.Arrays 2.由于数组对象本身并没有什么方法可以供我们调用&#xff0c;但API中提供了一个工具类Arrays供我们使用&#xff0c;从而可以对数据对象进行一些基本的操作。 3.查看JDK帮助文档 4.Arrays类中的方法都是static修饰静态的静态方法&…

minSdkVersion、targetSdkVersion、compileSdkVersion三者的作用解析

minSDK和targetSDK&#xff0c;这两者相当于一个区间。你能够用到targetSDK中最新的API和最酷的新功能&#xff0c;但又需要向后(向下)兼容到minSDK&#xff0c;保证这个区间内的设备都能够正常的执行你的APP。换句话说&#xff0c;想使用Android刚刚推出的新特性&#xff0c;但…

6 PXE高效批量网络装机

6.1部署PXE远程安装服务 在大规模的Liunx应用环境中&#xff0c;如web群集&#xff0c;分布式计算等&#xff0c;服务器往往并不配备光驱设备&#xff0c;在这种情况下&#xff0c;如何为数十乃至上百台服务器裸机快速安装系统呢&#xff1f;传统的USB光驱&#xff0c;移动硬盘…

零编程数据可视化展示:十个简易案例!

数据可视化是呈现数据内在价值的最终手段。数据可视化实例利用各种图表和图形设计手段&#xff0c;合乎逻辑地展示复杂而不直观的数据。为了让用户直观清楚地了解他们想要的数据及其比较关系&#xff0c;数据可视化实例的呈现至关重要。即时设计整理了10个数据可视化实例&#…

17-C语言中的变量生命周期——自动存储期、青苔存储期、自定义存储期

17-C语言中的变量生命周期——自动存储期、青苔存储期、自定义存储期 文章目录 17-C语言中的变量生命周期——自动存储期、青苔存储期、自定义存储期一、自动存储期示例 二、静态存储期2.1 示例 三、自定义存储期3.1 如何申请内存3.2 如何释放内存3.3 如何清空内存3.4 示例 概念…

【学习DayNa】信息系统开发整理

✍&#x1f3fb;记录学习过程中的输出&#xff0c;坚持每天学习一点点~ ❤️希望能给大家提供帮助~欢迎点赞&#x1f44d;&#x1f3fb;收藏⭐评论✍&#x1f3fb;指点&#x1f64f; 结构化方法 结构是指系统内各个组成要素之间的相互联系、相互作用的框架。结构化开发方法就是…

需求工程师的基本职责(合集)

需求工程师的基本职责1 职责&#xff1a; 1、负责用户需求调研、用户需求分析&#xff0c;明确用户需求分析&#xff0c;明确用户功能需求、业务需求&#xff0c;转换成软件需求说明。 2、收集、分析、整理、提炼系统需求&#xff0c;能够对业务流程提出优化建议并写成系统功能…