CVE-2020-1957 漏洞复现

news2024/12/22 20:39:39

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

踩坑点:

在一开始翻阅了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

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

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

相关文章

JAVA每日作业day6.19

ok了家人们今天继续学习面向对象&#xff0c;话不多说看看今天学了什么 一.面向对象-封装 1&#xff0c;private private:私有的 权限修饰符 是一个成员修饰符&#xff0c;修饰成员变量 被private修饰的成员变量和成员方法只能在本类中使用 对外访问使用是 set XXX 和 get X…

Redis缓存与数据库双写不一致及解决方法

1.缓存与数据库双写不一致 在大并发下&#xff0c;同时操作数据库与缓存会存在数据不一致性问题 1.1 双写不一致情况 1.2 读写并发不一致 2.解决方法 对于并发几率很小的数据(如个人维度的订单数据、用户数据等)&#xff0c;这种几乎不用考虑这个问题&#xff0c;很少会发生…

小主机折腾记录27

1.买了一个9600k&#xff0c;3根台电 4G 2666 极光A40&#xff0c;一根台电8G2666 极光A40&#xff0c;一根国惠8G2666&#xff0c;一个惠普3热管散热器 测试结果如下 1&#xff09;三根台电 4G2666 相互兼容&#xff0c;频率2667显示正常&#xff0c;显示为美光颗粒&#xff0…

React state(及组件) 的保留与重置

当在树中相同的位置渲染相同的组件时&#xff0c;React 会一直保留着组件的 state return (<div><Counter />{showB && <Counter />} </div> ) // 当 showB 为 false, 第二个计数器停止渲染&#xff0c;它的 state 完全消失了。这是因为 React…

香港“试水”医疗多模态大模型

更好地引入及发掘行业数据有望为垂直领域内的多模态大模型开发提供新可能。中国香港特区传统科研优势要嫁接产业风口&#xff0c;国际化渠道如何与内地资源携手&#xff1f; 产业多模态大模型“风头”正盛&#xff0c;在积极寻找经济新动能的中国香港特区&#xff0c;相关产业…

onnx进阶算子优化

一、定义 如何保证pytorch 模型顺利转为onnx. 前言pytorch 算子是如何与onnx 算子对齐的&#xff1f;Asinh 算子出现于第 9 个 ONNX 算子集。PyTorch 在 9 号版本的符号表文件中是怎样支持这个算子的&#xff1f;BitShift 算子出现于第11个 ONNX 算子集。PyTorch 在 11 号版本…

QT——信号和槽

一、信号的概念 信号成员会在满足一定条件时某个对象自动触发该对象的信号(触发条件可以通过QT帮助文档进行查看每个类中标示了signals的栏位),触发后程序会调用与信号相连接的槽函数。 二、槽函数的概念 Qt中的槽函数(Slot)是与信号(Signal)对应的概念,用于接收信号…

TIME_WAIT的危害

前言 该文章主要讨论下TIME_WAIT的存在意义和潜在危害&#xff0c;以及解决措施。 具体内容 首先看一下下面这幅图 这幅图来自《TCP IP详解卷1&#xff1a;协议 原书第2版中文》TCP状态变迁图。 TIME_WAIT存在意义 可靠的终止TCP连接。 保证让迟来的TCP报文有足够的时间被…

spring中@Conditional

多环境切换 java配置使用profile Profile设置在某个环境下&#xff0c;spring注入对应的bean public class JavaConfig {BeanProfile("dev")DataSource devDs(){DataSource ds new DataSource();ds.setUrl("dev");ds.setUsername("dev");ret…

Win11 删除文件时提示“找不到该项目,请重试”的解决办法

1、Win R 打开运行窗口&#xff0c;输入 notepad 并回车打开文本文档(记事本)软件&#xff0c;如下图&#xff1a; 2、在文本文档(记事本)软件中复制粘贴以下代码&#xff0c;如下图&#xff1a; del /f /a /q \\?\%1 rd /s /q \\?\%1或DEL /F /A /Q \\?\%1 RD /S /Q \\?…

基于SpringBoot+Vue农产品管理与销售APP设计和实现(源码+LW+调试文档+讲解等)

&#x1f497;博主介绍&#xff1a;✌全网粉丝1W,CSDN作者、博客专家、全栈领域优质创作者&#xff0c;博客之星、平台优质作者、专注于Java、小程序技术领域和毕业项目实战✌&#x1f497; &#x1f31f;文末获取源码数据库&#x1f31f; 感兴趣的可以先收藏起来&#xff0c;还…

python 版本切换,更换当前默认版本

电脑可以安装多个版本&#xff0c;但是好像没有正规的维护python版本的工具&#xff0c;比如前端就有nvm切换node版本&#xff0c;但是python我没找到比较好的&#xff08;有大佬知道路过方便留言一下&#xff0c;跪谢。。&#xff09; 废话不多说&#xff0c;更改默认版本很简…

反射复习(java)

文章目录 反射机制的作用反射机制的原理加载机制详细解释 获取 Class 对象反射获取构造方法&#xff1a;获取 Class 对象里面 Constructor 对象反射获取成员变量&#xff1a;获取Class 对象里面的 Field 对象反射获取成员方法&#xff1a;获取 Class 对象里的 Method 对象其他常…

融合创新,共筑未来 | 人大金仓为轨道交通发展注入新质力量

METROTRANS 2024 6月13日~15日&#xff0c;以“多元融合 高质量可持续发展”为主题的2024北京-南京国际城市轨道交通展览会暨高峰论坛在南京国际博览中心隆重举行。人大金仓受邀亮相本次大会&#xff0c;展示了其在轨道交通的创新应用和解决方案。 ‍点击视频 直击现场‍ 规模最…

机器学习课程复习——奇异值分解

1. 三种奇异值分解 奇异值分解&#xff08;Singular Value Decomposition, SVD&#xff09;包含了&#xff1a; 完全奇异值分解&#xff08;Complete Singular Value Decomposition, CSVD&#xff09;紧奇异值分解&#xff08;Tight Singular Value Decomposition, TSVD&…

年终奖发放没几天,提离职领导指责我不厚道,我该怎么办?

“年终奖都发了&#xff0c;你还跳槽&#xff1f;太不厚道了吧&#xff01;” “拿完年终奖就走人&#xff0c;这不是典型的‘骑驴找马’吗&#xff1f;” 每到岁末年初&#xff0c;关于“拿到年终奖后是否应该立即辞职”的话题总会引发热议。支持者认为&#xff0c;这是个人…

GLSB是什么?带你深入了解GLSB核心功能

伴随互联网的快速发展&#xff0c;大型企业等组织单位通过建设多数据中心&#xff0c;以提升用户体验。然而想要在多个数据中心实现流量的智能管理&#xff0c;提高网站的可靠性和可用性&#xff0c;则需要全局服务器负载均衡技术——GLSB的助力。GLSB是什么&#xff1f;它又有…

笔记本系统盘移植与windowsLinux双系统安装

目录 一、 前言二、 Windows系统移植二、 安装Linux三、 Windows分区配置 一、 前言 笔记本内存不够了&#xff0c;之前给笔记本添加了一个机械硬盘&#xff0c;也几乎爆满了&#xff0c;于是购置了1T的固态硬盘&#xff0c;打算用这个固态硬盘安装双系统&#xff0c;剩余空间…

【雷丰阳-谷粒商城 】【分布式高级篇-微服务架构篇】【11】ElasticSearch

持续学习&持续更新中… 守破离 【雷丰阳-谷粒商城 】【分布式高级篇-微服务架构篇】【11】ElasticSearch 简介基本概念ElasticSearch概念-倒排索引安装基本命令ik 分词器SpringBoot整合测试存储数据&#xff1a;测试复杂检索同步与异步调用 参考 简介 Elasticsearch 是一…

【UE数字孪生学习笔记】 Apifox一体化接口测试平台

声明&#xff1a;部分内容来自于b站&#xff0c;知乎&#xff0c;慕课&#xff0c;公开课等的课件&#xff0c;仅供学习使用。如有问题&#xff0c;请联系删除。 部分内容来自UE官方文档&#xff0c;博客等 Apifox接口测试 Apifox 是集 API 文档、API 调试、API Mock、API 自动…