Shiro-认证绕过漏洞(CVE-2020-1957)
漏洞原理
核心点就是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
Shiro-认证绕过漏洞(CVE-2020-1957)的更多相关文章
- Shiro 身份认证绕过漏洞 CVE-2022-32532
前言 Apache Shiro 是一个强大且易用的 Java 安全框架,通过它可以执行身份验证.授权.密码和会话管理.使用 Shiro 的易用 API,您可以快速.轻松地保护任何应用程序 -- 从最小 ...
- AppWeb认证绕过漏洞(CVE-2018-8715)
AppWeb认证绕过漏洞(CVE-2018-8715) 一.漏洞描述 Appweb简介 Appweb是一个嵌入式HTTP Web服务器,主要的设计思路是安全.这是直接集成到客户的应用和设备,便于开发和 ...
- CVE-2020-17523:Apache Shiro身份认证绕过漏洞分析
0x01 Apache Shiro Apache Shiro是一个强大且易用的Java安全框架,执行身份验证.授权.密码和会话管理. 0x02 漏洞简介 2021年2月1日,Apache Shiro官 ...
- CVE-2017-5521: Bypassing Authentication on NETGEAR Routers(Netgear认证绕过漏洞)
SpiderLabs昨天发布的漏洞, 用户访问路由器的web控制界面尝试身份验证,然后又取消身份验证,用户就会被重定向到一个页面暴露密码恢复的token.然后通过passwordrecovered.c ...
- Vulhub-Mysql 身份认证绕过漏洞(CVE-2012-2122)
前言 当连接MariaDB/MySQL时,输入的密码会与期望的正确密码比较,由于不正确的处理,会导致即便是memcmp()返回一个非零值,也会使MySQL认为两个密码是相同的.也就是说只要知道用户名, ...
- AppWeb认证绕过漏洞(CVE-2018-8715)
影响范围 Appweb 7.0.2及早期版本. 复现 构造头Authorization: Digest username=admin 返回包里包含session 发送POST请求,添加session到 ...
- Libssh认证绕过CVE-2018-10933漏洞复现
0x00 漏洞描述 libssh 0.6 及以上的版本,在服务端的代码实现中存在身份认证绕过漏洞.在向服务端认证的流程中,攻击者通过将 SSH2_MSG_USERAUTH_REQUEST 消息替换为 ...
- Nuxeo 认证绕过和RCE漏洞分析(CVE-2018-16341)
简介 Nuxeo Platform是一款跨平台开源的企业级内容管理系统(CMS).nuxeo-jsf-ui组件处理facelet模板不当,当访问的facelet模板不存在时,相关的文件名会输出到错误页 ...
- CVE-2022-32532 Apache Shiro 身份认证绕过
漏洞名称 CVE-2022-32532 Apache Shiro 身份认证绕过 利用条件 Apache Shiro < 1.9.1 漏洞原理 使用RegexRequestMatcher进行权限配 ...
- 应用安全-软件安全-漏洞CVE整理
jira ssrf CVE-2019-8451 url = url + '/plugins/servlet/gadgets/makeRequest?url=' + host + '@www.baidu ...
随机推荐
- IPFS 解决国内 docker mirror 封锁
IPFS 解决国内 docker mirror 封锁 内容仅用于研究,帮助开发者学习技术知识,以建设祖国 IPFS 技术是当前 Web3 的主要基建设施,提供去中心化存储,以及 libp2p 的去中心 ...
- 20+前端常用的vscode插件(总结推荐)
本篇文章给大家总结分享20多个前端常用的vscode插件.有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助. 1. vscode 简介vscode是微软开发的的一款代码编辑器,就如官网上 ...
- 记录一下实习的第一次线下面试的答辩经历,关于seata|sentinel,gateway与栈
面的一家小公司,他们准备做单体架构升级到微服务,所以问了我一些微服务相关的东西.回答的依托答辩,今天回想起来记录一下我造出来的笑话,正常的就不写在这里了. 首先我简历上大部分写的是熟悉,只有微服务写的 ...
- 【Java】MultiThread 多线程 Re02 线程通讯
一.等待与唤醒 /** * 线程通讯问题 * Object wait, notify, notifyAll * Condition await signal signAll * CountDownLa ...
- 【C3】05 层叠与继承
本文旨在让你理解CSS的一些最基本的概念 --层叠.优先级和继承-- 这些概念决定着如何将CSS应用到HTML中,以及如何解决冲突. 尽管与课程的其他部分相比,完成这节课可能看起来没有那么直接的相关性 ...
- 什么是智慧城市(Smart City)?
Smart City是一个常见的概念,但是这个东西,这个名词到底指代的是什么却一直搞不太清,于是就查了查资料,有了这篇blog. 参考: https://baijiahao.baidu.com/s?i ...
- nvidia显卡服务器,负载严重,温度爆表,如何解决 —— 降低功率、降频
设置功率为180W: sudo nvidia-smi -pl 180 为指定显卡设置功率: (-i 后接显卡号) sudo nvidia-smi -pl 180 -i 0,1,2,3
- MPI经典课程视频 —— 中国科学技术大学-并行计算(国家级精品课) —— 陈国良院士的06年课程
课程视频地址: https://www.bilibili.com/video/BV1U7411N78e
- 再用国产操作系统deepin出现拖影现象
问题如题,使用deepin系统后发现不论是网页的拖动.滑动都会出现明显拖影现象,最神奇的是使用爱奇艺的客户端播放器时同样出现拖影现象. 不过这个拖影现象截图还体现不出来这个拖影的效果,估计只有录屏才可 ...
- manim边学边做--点
几何图形是manim中最重要的一类模块,manim内置了丰富的各类几何图形,本篇从最简单的点开始,逐个介绍manim中的几何模块. manim中点相关的模块主要有3个: Dot:通用的点 Labele ...