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 ...
随机推荐
- Linux使用shell脚本监控
(1)性能监控脚本 performance.sh #!/bin/bash #-------------------------------------------------------------- ...
- 在idea的控制台中中文显示为乱码
显示乱码的原因不一定相同 我目前解决方法: -Dfile.encoding=UTF-8
- pixel的Edxposed刷机过程
1.先解开bl锁 这里的步骤,因为我机子本来就是解过的了,所以简单记录一下过程好了 第一步:确保你的环境变量是否设置好了,判断的标准就是打开终端(我是mac),usb连接上,然后输入 adb devi ...
- 入门Kubernetes-Service
一.前言 前一篇文章通过 Deployment 实现了Pod中服务实现滚动更新/回滚等操作:在真实应用场景中,需要将一组Pod提供给外部访问.而且Pod生命周期是短暂的,在 Pod 的生命周期过程中, ...
- C控制台程序 GUI程序
控制台程序对应的工程类型为"Win32控制台程序(Win32 Console Application)",GUI 程序对应的工程类型为"Win32程序(Win32 App ...
- IDA 修改后保存
关键点找到了.把 jz short loc_10004753 改成jnz short loc_10004753即可. IDA->edit->Patch program->Assemb ...
- 【剑指offer】03.数组中重复的数组
剑指 Offer 03. 数组中重复的数字 知识点:数组:哈希表:萝卜占坑思想 题目描述 找出数组中重复的数字. 在一个长度为 n 的数组 nums 里的所有数字都在 0-n-1 的范围内.数组中某些 ...
- React中组件之间通信的方式
一.是什么 我们将组件间通信可以拆分为两个词: 组件 通信 回顾Vue系列的文章,组件是vue中最强大的功能之一,同样组件化是React的核心思想 相比vue,React的组件更加灵活和多样,按照不同 ...
- 以初学者的角度理解:SQL实现关系除法
以初学者的角度理解:SQL实现关系除法 相信各位在学习SQL的时候,由于没有一家SQL语言提供除法命令而只能自己写一个.而网上大多就是四步骤加一个模板: select distinct A.X fro ...
- Linux CentOS 7 在Apache服务器上安装SSL证书
在开发微信小程序的时候,wx.request请求的地址必须是https的,所以只能重新配置服务器. 域名和服务器都是在阿里云上买的,系统是CentOS7,安装了Apache服务器.网上也找了一下,很多 ...