首页 > 其他分享 >Apache Shiro 认证绕过漏洞【CVE-2020-1957】

Apache Shiro 认证绕过漏洞【CVE-2020-1957】

时间:2022-10-24 16:25:47浏览次数:101  
标签:URL 漏洞 1957 2020 Shiro Apache 绕过 shiro

Apache Shiro是一个强大且易用的Java安全框架,执行身份验证、授权、密码和会话管理。使用Shiro的易于理解的API,可以快速、轻松地获得任何应用程序,从最小的移动应用程序到最大的网络和企业应用程序。内置了可以连接大量安全数据源(又名目录)的Realm,如LDAP、关系数据库(JDBC)、类似INI的文本配置资源以及属性文件等。

Apache Shiro 1.5.2之前的版本,由于Shiro拦截器和requestURI的匹配流程与Web框架的拦截器的匹配流程有差异,攻击者构造一个特殊的http请求,可以绕过Shiro的认证,未授权访问敏感路径。

此漏洞有两种攻击方式,第一种攻击方式适用于Shiro < 1.5.0版本,由于Shiro 1.5.0版本修复补丁考虑不全面,导致补丁绕过,出现了第二种攻击方式,适用于Shiro < 1.5.2版本。

环境搭建

访问8080端口查看首页

这个应用中对URL权限的配置如下:

@Bean
public ShiroFilterChainDefinition shiroFilterChainDefinition() {
    DefaultShiroFilterChainDefinition chainDefinition = new DefaultShiroFilterChainDefinition();
    chainDefinition.addPathDefinition("/login.html", "authc"); // need to accept POSTs from the login form
    chainDefinition.addPathDefinition("/logout", "logout");
    chainDefinition.addPathDefinition("/admin/**", "authc");
    return chainDefinition;
}

直接请求管理页面/admin/,无法访问,将会被重定向到登录页面:

构造恶意请求/xxx/..;/admin/,即可绕过权限校验,访问到管理页面:

原理

参考:Apache Shiro权限绕过漏洞CVE-2020-1957

本漏洞起源于 SHIRO-682。在Spring中,/resource/xx与/resource/xx/都会被截成/resource/xx以访问相应资源;在shiro中,/resource/xx与/resource/xx/被视为两个不同路径。所以在Spring集成shiro时,只需要在访问路径后添加/就存在绕过权限校验的可能。

分析我们请求的URL在整个项目的传入传递过程。在使用了shiro的项目中,是我们请求的URL(URL1),进过shiro权限检验(URL2), 最后到springboot项目找到路由来处理(URL3)。漏洞的出现就在URL1,URL2和URL3 有可能不是同一个URL,这就导致我们能绕过shiro的校验,直接访问后端需要首选的URL。

修复建议:Apache Shiro最新版本已经修复此漏洞,请受漏洞影响的用户下载最新版本,下载链接:http://shiro.apache.org/download.html

标签:URL,漏洞,1957,2020,Shiro,Apache,绕过,shiro
From: https://www.cnblogs.com/-ggbond-/p/16821782.html

相关文章

  • Apache Struts2远程代码执行【S2-001】
    Struts2Struts2是一个基于MVC设计模式的Web应用框架,它本质上相当于一个servlet,在MVC设计模式中,Struts2作为控制器(Controller)来建立模型与视图的数据交互。Struts2是St......
  • Apache Log4j Server 反序列化【CVE-2017-5645】
    ApacheLog4jServer反序列化【CVE-2017-5645】ApacheLog4j是一个用于Java的日志记录库,其支持启动远程日志服务器。ApacheLog4j2.8.2之前的2.x版本中存在安全漏洞。攻......
  • 20201302姬正坤第五章学习笔记
    LINUX第五章定时器及时钟服务硬件定时器定时器是由时钟源和可编程计数器组成的硬件设备。时钟源通常是一个晶体振荡器,会产生周期性电信号,以精确的频率驱动计数器。使用......
  • java.lang.ClassNotFoundException: org.apache.ibatis.io.Resources
    不知道为什么会出现mybatis包无法加载的问题解决方案:File->ProjectStructure  然后Apply->OK就不会出现刚刚的错误了......
  • phpMyAdmin后台SQL注入【CVE-2020-5504】
    环境搭建使用vulfocus靶场,官网:https://vulfocus.cn/#/dashboarddockerpullvulfocus/phpmyadmin-cve_2020_5504dockerrun-d-p80:80vulfocus/phpmyadmin-cve_2020......
  • Apache HTTPD 换行解析(CVE-2017-15715)
    httpd是Apache超文本传输协议(HTTP)服务器的主程序。Apache是世界使用排名第一的Web服务器软件。它可以运行在几乎所有广泛使用的计算机平台上,由于其跨平台和安全性被广泛......
  • [BJDCTF2020]The mystery of ip
    打开题目  发现一个flag标签打开  看到了页面获取了本机的ip,看到ip就想到了X-Forwarded-For:抓取flag页面,添加X-Forwarded-For:构造payload,系统命令查看根目录......
  • 20201306吴龙灿第五章学习笔记
    Ⅰ知识点归纳一、硬件定时器定时器是由时钟源和可编程计数器组成的硬件设备。时钟源通常是一个晶体振荡器,会产生周期性电信号,以精确的频率驱动计数器。硬件定时器能够按......
  • 20201220蔡笃俊《信息安全系统设计与实现》第五章学习笔记
    一、任务内容自学教材第5章,提交学习笔记(10分)知识点归纳以及自己最有收获的内容(3分)问题与解决思路(2分)实践内容与截图,代码链接(3分)...(知识的结构化,知识的完整性等,提交m......
  • 大数据Hadoop之——Apache Hudi 数据湖实战操作(Spark,Flink与Hudi整合)
    目录一、概述二、HudiCLI三、Spark与Hudi整合使用1)Spark测试2)Spark与Hudi整合使用1、启动spark-shell2、导入park及Hudi相关包3、定义变量4、模拟生成Trip乘车数......