Apache Shiro 认证绕过漏洞 CVE-2020-1957 漏洞复现

Apache Shiro 认证绕过漏洞 CVE-2020-1957 漏洞复现

  • 一、漏洞描述
  • 二、漏洞影响
  • 三、漏洞复现
    • 1、环境搭建
    • 2、漏洞复现
  • 四、漏洞POC
  • 五、参考链接

一、漏洞描述

Apache Shiro 是一款开源安全框架,提供身份验证、授权、密码学和会话管理。Shiro框架直观、易用,同时也能提供健壮的安全性。
CVE-2020-1957,Spring Boot中使用 Apache Shiro 进行身份验证、权限控制时,可以精心构造恶意的URL,利用 Apache Shiro 和 Spring Boot 对URL的处理的差异化,可以绕过 Apache Shiro 对 Spring Boot 中的 Servlet 的权限控制,越权并实现未授权访问。

二、漏洞影响

Apache Shiro < 1.5.1

三、漏洞复现

1、环境搭建

执行如下命令启动一个搭载Spring 2.2.2与Shiro 1.5.1的应用:

cd vulhub/shiro/CVE-2020-1957
docker-compose up -d

环境启动后,访问http://x.x.x.x:8080即可查看首页:
在这里插入图片描述

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

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

2、漏洞复现

使用BurpSuite抓取数据包,访问/admin/目录:
在这里插入图片描述
回显302并跳转到登录页面:
在这里插入图片描述
构造恶意请求/xxx/..;/admin/,即可绕过权限校验,访问到管理页面:
在这里插入图片描述
URL请求过程:

  • 客户端请求URL: /xxx/..;/admin/
  • Shrio 内部处理得到校验URL为 /xxxx/..,校验通过
  • SpringBoot 处理 /xxx/..;/admin/ , 最终请求 /admin/, 成功访问了后台请求。

四、漏洞POC

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

五、参考链接

https://www.safedog.cn/news.html?id=4441
https://blog.spoock.com/2020/05/09/cve-2020-1957/

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/358073.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

H5工程师在谷歌浏览器调试并开发原生APP项目的解决办法

背景:项目是前后端分离,我想在浏览器调试项目,工具使用HB-X。密码是不可输入状态。 1.login.html在HB-X中运行到谷歌浏览器页面 。按F12进入调试模式。 2.密码做了安全防御,不能直接输入,我们在控制台进入。定位到password的id。

在NSUserDefaults中存储自定义类型的数据

将自定义的类的数据以数组的形式直接存储到NSUserDefaults中会报错&#xff0c;需要进行转换&#xff0c;且需要将该类实现NSCoding协议。 e.g. 存储过程 NSMutableArray *archiveArr [NSMutableArray arrayWithCapacity:self.STNArrayList.count];for (STNArrayList *singleL…

「Java代码审计」华夏ERP3.0代码审计

本文转载于&#xff1a;https://blog.csdn.net/Ananas_Orangey/article/details/120340010?ops_request_misc%257B%2522request%255Fid%2522%253A%2522166565951516782427492557%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fall.%2522%257D&request_id166…

vue路由的钩子函数有哪些?都做了哪些事情?

Vue Router 是 Vue.js 官方的路由管理器。它和 Vue.js 的核心深度集成,让构建单页面应用变得易如反掌。包含的功能有: 嵌套的路由/视图表模块化的、基于组件的路由配置路由参数、查询、通配符基于 Vue.js 过渡系统的视图过渡效果细粒度的导航控制带有自动激活的 CSS class 的…

api中重载函数的原理_小心重载API方法

api中重载函数的原理重载方法是API设计中的一个重要概念&#xff0c;尤其是当您的API是流利的API或DSL&#xff08; 特定于域的语言 &#xff09;时。 对于jOOQ就是这种情况&#xff0c;在这种情况下&#xff0c;您经常想使用与完全相同的方法名称来与库进行各种交互。 示例&a…

自动计算高度的方法 iOS, height为0, 可以自动计算weith,

height为0, 可以自动计算weith; weith为0, 可以自动计算height, 两者不可以同时为0 NSDictionary *dic {NSFontAttributeName: [UIFont systemFontOfSize:17]}; CGRect rect [joke.content boundingRectWithSize:CGSizeMake(375 - 20, 0) options:(NSStringDrawingUsesFontLe…

Fastjson 1.2.22-24 反序列化漏洞分析

Fastjson 1.2.22-24 FastJson在 1.2.22 - 1.2.24 版本中存在反序列化漏洞&#xff0c;主要原因FastJson支持的两个特性&#xff1a; fastjson反序列化时&#xff0c;JSON字符串中的 type 字段&#xff0c;用来表明指定反序列化的目标恶意对象类。 fastjson反序列化时&#xf…

new操作符具体都干了什么?一次笔试题遇到的

背景&#xff1a;一个笔试题简答谈到new操作符都干了什么&#xff1f;连续两次遇到&#xff0c;总结一下&#xff0c;不然不会的还是不会 new 共经过了4个阶段:1.创建一个空对象 let obj new Object();2.链接到原型 把 obj 的proto 指向构造函数Func的原型对象 prototype&am…

检测到堆栈粉碎

我敢打赌&#xff0c;每一个Java开发人员在他们的职业生涯初期都首次在Java代码中遇到本机方法时都会感到惊讶。 我还可以肯定&#xff0c;多年来随着了解JVM如何通过JNI处理对本机实现的调用而使惊喜消失了。 这篇文章是关于本机方法的最新经验。 更详细地讲&#xff0c;使用…

关于mysql中外键关联的一些个人理解

在我看来hibernate最麻烦的一件事就是配置外键关联&#xff0c;稍微不慎就会出现配置错误的情况&#xff0c;现在的项目全部都是在使用mybaits&#xff0c;而mybaits使用就简单的多&#xff0c;起码虽然说是要自己写mysql语句&#xff0c;但是起码这种做法在现阶段的项目开发中…

fastjson反序列化分析

1.fastjson简单使用 User: package com.naihe;public class User {private String name;private int age;public User() {}public User(String name, int age) {this.name name;this.age age;}public String getName() {return name;}public void setName(String name) {th…

防抖函数的实现

防抖函数的定义是当事件触发完成之后再延迟触发&#xff0c;并且只触发一次&#xff1b;如果在触发完成之前再次触发&#xff0c;则会再次刷新延迟&#xff1b;简单理解为&#xff08;如果事件不触发即不执行&#xff0c;并且只会执行一次&#xff0c;就是定时器最后走的那一次…

银行家算法:解决多线程死锁问题

死锁&#xff1a; 死锁产生的现场&#xff1a;当A进程P S2信号量而B进程P S1信号量时就会产生死锁&#xff0c;因为S2信号量需要B进程释放&#xff0c;而S1信号量需要A进程释放&#xff0c;因此两个进程都在等相互的资源&#xff0c;造成死锁。 死锁产生的条件&#xff1a; 互斥…

节流函数的实现,一次面试题遇到的编程题

在日常开发中有很多场景我们都需要用到节流函数和防抖函数&#xff0c;比如&#xff1a;实现输入框的模糊查询因为需要轮询ajax&#xff0c;影响浏览器性能&#xff0c;所以需要用到节流函数&#xff1b;实现手机号、姓名之类的的验证&#xff0c;往往我们只需要验证一次&#…

guice注入带参构造器_带有Guice的富域模型

guice注入带参构造器贫血域模型是一个非常常见的反模式。 在ORM和DI框架的世界中&#xff0c;我们自然会发现自己拥有一个由ORM管理的“域”&#xff0c;该域包含所有数据且无行为。 通过我们的DI框架有帮助地注入了辅助类&#xff0c;这些辅助类都是行为且没有数据。 在本文中…

转:巧用搜狗输入法输入英文单词

转&#xff1a; http://www.techweb.com.cn/digi/experience/2013-06-03/1300700.shtml 你是否遇到过这样的情形&#xff1a;想打一个英文单词&#xff0c;但是忘了具体拼写是什么&#xff0c;只是记了个大概?比如“竞争”&#xff0c;到底是competetion还是competition呢?又…

服务器ping不通的解决办法之阿里云云服务器VNC报错Failed to execute /sbin/init

背景:最近买了一个阿里云的云服务器,今天想安装阿里云的操作文档搭建一个博客网站来着,发现服务器公网IP都ping不通 解决办法参考: 方法一:如何解决ping请求超时的问题 方法二:本地ping服务器连接不到,总是超时 我的防火墙已经关闭,内网切换移动网络也不行,安全组…

从ofcms的模板注入漏洞(CVE-2019-9614)浅析SSTI漏洞(freemarker模板)

https://www.cnvd.org.cn/flaw/show/CNVD-2019-08488 思路: 1、pom.xml的时候发现存在模版引擎freemarker http://t.zoukankan.com/Eleven-Liu-p-12747908.html 2、寻找修改模版的地方 TemplateController.java 3、添加执行Payload <#assign ex“freemarker.template.utilit…

集合中的可选

有时有人认为Optional类型值得在集合中使用。 据称&#xff0c;它解决了以下问题&#xff1a; HashMap在没有键映射以及值null映射到键的情况下返回null 。 如果使用Map<Optional<Something>>则可以清楚地区分缺少的映射和缺少的值。 这样一来&#xff0c;您在兔子…

当你不知道今天星期几,不妨在编辑器写下这段代码

背景:最近加班比较严重,天天废寝忘食的写代码,不知春夏,看看今天星期几啦,实现方式很多,下面演示一下switch的方式 html: <!DOCTYPE html> <html><head><meta charset="utf-8"><title>孙叫兽测试switch语句</title></…