首页 星云 工具 资源 星选 资讯 热门工具
:

PDF转图片 完全免费 小红书视频下载 无水印 抖音视频下载 无水印 数字星空

Shiro-认证绕过漏洞(CVE-2020-1957)

编程知识
2024年09月21日 10:03

漏洞原理

核心点就是shiro和spring对uri进行配合匹配的时候有缺陷导致的,shiro中很轻易就能绕过,其次spring中对;分号好像情有独钟,被大牛们发现后也就一下子绕过了。
主流payload:/xxx/..;/admin/
具体后台路由不一定是admin,得看情况而定,但是下面的分析都由admin为后台路由进行分析。

源码分析与复现

环境说明:后台路由为/admin
下面我用vulhub开启对应的靶场
在这里插入图片描述
接着访问uri:/xxx/..;/admin
xxx是随便填,而最重要的认证绕过的是..;能够让你走到admin后台,复现成功了。
在这里插入图片描述
在该漏洞中,认证过程需要走两个框架,一个是shiro另一个是spring,uri第一个进入的是shiro接着判断完了才交给spring,这个交给spring的时候也出了问题,下面开始讲解过程。
1.shiro中可能会有这样的过滤器对uri进行匹配,分支判断是否需要认证
在这里插入图片描述
这里是配置map.put会出现问题,所以是否出现认证绕过还得看匹配的规则写的如何,这不重要,我们约定配置为:/admin/** 然后该规则下需要authc,表示需要进行身份认证,这看起来很正常,admin路由确实要求身份认证。

2.接着我们下面开始分析当请求http://xxx.xxxx.com/xxx/..;/admin在后台是如何走的:
首先经过shiro处理,直接看最重要的部分,shiro对;分号的处理。
作用:直接匹配59,即;的ascii码值,发现有分号就返回分号前的字段,否则返回整个uri。
那么这里就拿到uri:xxx/..
在这里插入图片描述

3.接下去的函数都是规范化,比如//处理成/这些就不说了,直接看最后给到拦截器判断的requestURI值为/xx/..,pathMatches就会根据拦截器判断是否为/admin/**,那么很显然不是,现在就相当于你bypass掉了shiro的认证。
在这里插入图片描述
4.shiro认证完了就到spring对uri进行认证了
怎么拿到uri就跳过了,主要分析他怎么处理;的即可
最主要跟进removeSemicolonContentInternal(requestUri)方法,他的作用就是:移除uri中/与/之间的的分号以及分号后面的内容
根据这句话可以得知最后的uri应该是:/xxx/../admin/ == /admin/
../ 为回到上一层目录,就到admin了,认证绕过结束,收工。

影响版本

Shiro < 1.5.3
SpringBoot 的版本 < 2.3


参考文章:
https://www.freebuf.com/articles/web/362350.html
https://blog.spoock.com/2020/05/09/cve-2020-1957/
https://cn-sec.com/archives/1312489.html

From:https://www.cnblogs.com/dhan/p/18423713
本文地址: http://shuzixingkong.net/article/2172
0评论
提交 加载更多评论
其他文章 Shiro-721—漏洞分析(CVE-2019-12422)
目录Padding Oracle Attack 原理PKCS5填充怎么爆破攻击漏洞原理源码分析漏洞复现 本文基于shiro550漏洞基础上分析,建议先看上期内容: https://blog.csdn.net/weixin_60521036/article/details/142373353 Padd
Shiro-721—漏洞分析(CVE-2019-12422) Shiro-721—漏洞分析(CVE-2019-12422) Shiro-721—漏洞分析(CVE-2019-12422)
痞子衡嵌入式:如果i.MXRT离线无法启动,试着分析ROM启动日志
大家好,我是痞子衡,是正经搞技术的痞子。今天痞子衡给大家介绍的是恩智浦i.MXRT系列MCU的ROM启动日志。 关于 i.MX RT 启动问题解决的文章,痞子衡写过非常多,其中大部分都是具体到某一类启动设备下的具体问题分析,比较依赖经验,这些经验当然是非常有用的。此外也有一篇 《启动失败先查看SRC
痞子衡嵌入式:如果i.MXRT离线无法启动,试着分析ROM启动日志 痞子衡嵌入式:如果i.MXRT离线无法启动,试着分析ROM启动日志 痞子衡嵌入式:如果i.MXRT离线无法启动,试着分析ROM启动日志
Scala编程语言基本常识
​&#160;本文参考来源: Scala编程语言基本常识 – 萌面人博客 ​ 一 基本常识 Scala被称为大数据的黄金语言,它的发明人是马丁奥德斯基(Martin Odersky) 2001年诞生,融合了Java和JS中很多特性。 Hadoop生态圈以java语言为主,而Spark以scala为主
Scala编程语言基本常识 Scala编程语言基本常识 Scala编程语言基本常识
使用 Flutter 3.19 更高效地开发
我们已隆重推出全新的 Flutter 版本——Flutter 3.19。此版本引入了专为 Gemini 设计的新 Dart SDK、一个能让开发者对 Widget 动画实现精细化控制的全新 Widget,Impeller 更新带来的渲染性能提升、有助于实现深层链接的工具和对 Windows Arm6
使用 Flutter 3.19 更高效地开发 使用 Flutter 3.19 更高效地开发 使用 Flutter 3.19 更高效地开发
Apache-Shiro <=1.2.4 反序列化漏洞 (代码审计)
一、Apache Shiro 简介: Apache Shiro提供了认证、授权、加密和会话管理功能,将复杂的问题隐藏起来,提供清晰直观的API使开发者可以很轻松地开发自己的程序安全代码。并且在实现此目标时无须依赖第三方的框架、容器或服务,当然也能做到与这些环境的整合,使其在任何环境下都可拿来使用。
Apache-Shiro <=1.2.4 反序列化漏洞 (代码审计) Apache-Shiro <=1.2.4 反序列化漏洞 (代码审计) Apache-Shiro <=1.2.4 反序列化漏洞 (代码审计)
FFmpeg开发笔记(五十三)移动端的国产直播录制工具EasyPusher
​EasyPusher是一款国产的RTSP直播录制推流客户端工具,它支持Windows、Linux、Android、iOS等操作系统。EasyPusher采用RTSP推流协议,其中安卓版EasyPusher的Github托管地址为https://github.com/EasyDarwin/EasyP
FFmpeg开发笔记(五十三)移动端的国产直播录制工具EasyPusher FFmpeg开发笔记(五十三)移动端的国产直播录制工具EasyPusher
manim边学边做--空心多边形
空心的多边形Cutout是一种比较特殊的多边形,主要用于解决与形状、大小、位置等相关的数学问题。 Cutout多边形可以定义物体表面的空洞或凹陷部分,从而更准确地模拟现实世界中的复杂形状。 比如,在PCB(印制电路板)设计中,通过放置Cutout空心的多边形,设计师可以精确地控制铜的覆盖区域,从而优
manim边学边做--空心多边形 manim边学边做--空心多边形 manim边学边做--空心多边形
反DDD模式之“复用”
本文书接上回《反DDD模式之关系型数据库》,关注公众号(老肖想当外语大佬)获取信息: 最新文章更新; DDD框架源码(.NET、Java双平台); 加群畅聊,建模分析、技术实现交流; 视频和直播在B站。 背景 在我们软件开发过程中,“复用接口(webapi)”、“复用服务(service)”是非常常
反DDD模式之“复用” 反DDD模式之“复用” 反DDD模式之“复用”