CVE-2020-17523:Apache Shiro身份认证绕过漏洞分析
0x01 Apache Shiro
Apache Shiro是一个强大且易用的Java安全框架,执行身份验证、授权、密码和会话管理。
0x02 漏洞简介
2021年2月1日,Apache Shiro官方发布漏洞通告,漏洞编号为:CVE-2020-17523。
当Apache Shiro与Spring框架结合使用时,攻击者可以通过构造特殊的HTTP请求数据包,绕过身份认证匹配规则。
0x03 漏洞复现
环境搭建
使用tomcat部署shiro1.7.0.war包。

公众号回复shiro获取下载链接。
复现过程
访问admin下面的资源/admin/1跳转到登录界面:


使用payload:/admin/%20绕过身份验证,成功访问admin页面:


0x04 漏洞分析
漏洞成因
代码中,Shiro会对请求的uri进行鉴权操作,Shiro的校验uri的函数为PathMatches,当PathMatches返回true时才会进入鉴权。

然而PathMatches("/admin/*","/admin/ ")返回结果为false,因此访问/admin/ 这个uri时Shiro不会进行鉴权操作,
但是Spring接收到的uri则是/admin/%20,会正常返回响应admin page。

代码分析
代码执行过程中调用tokenizeToStringArray方法,而当调用此方法时trimTokens参数值为true:

而在tokenizeToStringArray方法中,trimTokens为true时调用了trim()函数,去除了空格字符,导致未进行鉴权操作:

简单总结下,在存在漏洞Shiro版本中,执行tokenizeToStringArray方法时trimTokens值为true,导致uri中的空格字符被清除,因此代码并没有经过鉴权处理,然而Spring接受到的uri:/admin/%20会正常返回响应,最终导致身份验证被绕过。
利用Shiro与Spring处理uri的不同规则绕过身份验证。
0x05 影响版本
Apache Shiro < 1.7.1
0x06 修复方案
官方修复方案中,将tokenizeToStringArray方法中的trimTokens置为false
建议升级到Apache Shiro 1.7.1版本
公众号回复shiro获取漏洞环境
CVE-2020-17523:Apache Shiro身份认证绕过漏洞分析的更多相关文章
- Shiro学习总结(3)——Apache Shiro身份认证
身份验证,即在应用中谁能证明他就是他本人.一般提供如他们的身份ID一些标识信息来表明他就是他本人,如提供身份证,用户名/密码来证明. 在shiro中,用户需要提供principals (身份)和cre ...
- Vulhub-Mysql 身份认证绕过漏洞(CVE-2012-2122)
前言 当连接MariaDB/MySQL时,输入的密码会与期望的正确密码比较,由于不正确的处理,会导致即便是memcmp()返回一个非零值,也会使MySQL认为两个密码是相同的.也就是说只要知道用户名, ...
- Apache shiro集群实现 (三)shiro身份认证(Shiro Authentication)
Apache shiro集群实现 (一) shiro入门介绍 Apache shiro集群实现 (二) shiro 的INI配置 Apache shiro集群实现 (三)shiro身份认证(Shiro ...
- Shiro身份认证---转
目录 1. Shro的概念 2. Shiro的简单身份认证实现 3. Shiro与spring对身份认证的实现 前言: Shiro 可以非常容易的开发出足够好的应用,其不仅可以用在 JavaSE 环境 ...
- AppWeb认证绕过漏洞(CVE-2018-8715)
AppWeb认证绕过漏洞(CVE-2018-8715) 一.漏洞描述 Appweb简介 Appweb是一个嵌入式HTTP Web服务器,主要的设计思路是安全.这是直接集成到客户的应用和设备,便于开发和 ...
- Shiro身份认证-JdbcRealm
Subject 认证主体 Subject认证主体包含两个信息 Principals : 身份,可以是用户名.邮箱.手机号等,用来标识一个登录主体身份. Credentials : 凭证,常见有密码,数 ...
- Shiro身份认证授权原理
shiro在应用程序中的使用是用Subject为入口的, 最终subject委托给真正的管理者ShiroSecurityMannager Realm是Shiro获得身份认证信息和来源信息的地方(所以这 ...
- Shiro身份认证、盐加密
目的: Shiro认证 盐加密工具类 Shiro认证 1.导入pom依赖 <dependency> <groupId>org.apache.shiro</groupId& ...
- shiro身份认证
pom.xml <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w ...
随机推荐
- idea中快捷键的设置
IDEA快捷方式改成eclipse的 File -> Settings -> Keymap 这里选Eclipse 然后Applay 即可: 快速生成main方法设置以及System.out ...
- Asp.net mvc使用SignaIR
一.Asp.net SignalR 是个什么东东 Asp.net SignalR是微软为实现实时通信的一个类库.一般情况下,SignalR会使用JavaScript的长轮询(long polling) ...
- FTP服务—三种登录类型的配置方法
目录 一.部署 二.配置vsftpd 1.匿名用户登录配置 2.系统用户登录配置 3.虚拟用户登录配置 1. 创建虚拟用户名单文件 2. 生成虚拟用户口令认证文件 3. 创建FTP根目录及虚拟用户映射 ...
- [TJOI2007]书架 题解
文中给了你一些句子,以及让你任意插入某个位置以及查询某个位置的句子. 发现因为是句子很难搞,所以开个 map 离散一下成数字.然后在额外开一个 map 记录这个数字对应的句子. 然后你要写一种支持插入 ...
- 「SPOJ 3105」Power Modulo Inverted
「SPOJ 3105」Power Modulo Inverted 传送门 题目大意: 求关于 \(x\) 的方程 \[a^x \equiv b \;(\mathrm{mod}\; p) \] 的最小自 ...
- POJ1934 Trip 题解
LCS 模板,但要输出具体方案,这就很毒瘤了. 神奇的预处理:fa[i][j]表示在 \(a\) 串的前 \(i\) 个字符中,字母表第 \(j\) 个字母最晚出现的位置,fb[i][j]同理. 这样 ...
- Linux虚拟机与主机网络连接配置与文件传输
网络配置 对于VMware虚拟机 1. 设置linux系统的网络配置,如下(NAT为默认配置,这里采用这一配置) 2. 主机中配置本地连接-属性-共享-勾选红框配置项,如下: 3.重启虚拟机. ...
- element UI table 状态显示:禁用-启用 上架-下架
vue2.0+elementUI 解决表单上架下架状态的切换 https://blog.csdn.net/weixin_42507803/article/details/81910297 <el ...
- intouch 10.1出现暂停读取PLC数据问题及其解决
问题描述 雨水泵站经过3年运行,突发dasmbtcp驱动与施耐德M580系列PLC时断时连问题 原因分析 在经过现场软件重装修复,授权重装,网络通讯状态监视(一直ping PLC IP地址方式)重装d ...
- Gitea 1.4.0 目录穿越导致命令执行漏洞
复现 POST /vulhub/repo.git/info/lfs/objects HTTP/1.1 Host: 192.168.49.2:3000 Accept-Encoding: gzip, de ...