热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

ApacheShiro身份验证绕过漏洞(CVE202011989)详细解析及防范措施

本文详细解析了ApacheShiro身份验证绕过漏洞(CVE202011989)的原理和影响,并提供了相应的防范措施。ApacheShiro是一个强大且易用的Java安全框架,常用于执行身份验证、授权、密码和会话管理。在ApacheShiro1.5.3之前的版本中,与Spring控制器一起使用时,存在特制请求可能导致身份验证绕过的漏洞。本文还介绍了该漏洞的具体细节,并给出了防范该漏洞的建议措施。

Apache Shiro 身份验证绕过漏洞 (CVE-2020-11989)

Shiro这个框架,我相信各位经常挖洞的师傅都不会陌生,因为这个框架有着臭名昭著的反序列化漏洞(CVE-2016-4437),攻击者可以使用Shiro的默认密钥伪造用户COOKIE,触发Java反序列化漏洞,进而在目标机器上执行任意命令。

但是,今天我们要讲的是Shiro身份验证绕过漏洞,这个漏洞已经出来大半年了,只是之前一直觉得作用并不明显(这是因为自己太菜了),最近正好遇到一次,遂之记录一下(开学前的最后一篇,开学后估计没时间更新了,大家看我名字应该知道了)。

0x00漏洞详情

Apache Shiro是一个强大且易用的Java安全框架,它可以用来执行身份验证、授权、密码和会话管理。目前常见集成于各种应用中进行身份验证,授权等。在Apache Shiro 1.5.3之前的版本,将Apache ShiroSpring控制器一起使用时,特制请求可能会导致身份验证绕过。

关键字:身份验证、Apache Shiro 1.5.3、Spring控制器

0x01漏洞影响范围


  • Apache Shiro <1.5.3
  • Spring 框架中只使用 Shiro 鉴权

0x02漏洞分析


  • Apache Shiro权限绕过漏洞分析(CVE-2020-11989)
  • Shiro权限绕过漏洞详细分析

0x03漏洞实战复现(这是第一种方法&#xff1a;url开头为/;关键词)

当我们在进行渗透时&#xff0c;若是遇到了shiro站&#xff0c;但站点已经将反序列化漏洞修复的时候&#xff0c;不妨试一试shiro权限绕过&#xff0c;有时是会有惊喜的&#xff01;

在这里插入图片描述

在挖洞的过程中&#xff0c;看到了我的burp发出警报&#xff0c;看了一眼&#xff0c;发现原来是Shiro框架

&#xff08;后来瞄了一下这个页面&#xff0c;熟悉感扑面而来。&#xff09;

在这里插入图片描述

测试了一波弱口令但没有成功之后&#xff0c;立马掏出我珍藏已久的Shiro反序列化利用工具梭哈一波&#xff01;

在这里插入图片描述

很遗憾&#xff0c;Shiro反序列化漏洞已经修复了&#xff0c;难道我就要败在这里了吗&#xff1f;&#xff1f;

突然想起了之前的Shiro权限绕过这个漏洞&#xff0c;于是查阅资料&#xff0c;复现一波

在Shiro框架的网站后面拼接/;/查看页面是否正常
这里我们拼接到刚刚的网站上
http://xxxxxx.com/;/login
查看网页是否正常

在这里插入图片描述

好家伙&#xff0c;页面正常回显&#xff0c;并且连验证码都不需要了。

这时候&#xff0c;一个疑问出现了&#xff0c;虽然Shiro权限绕过成功复现了&#xff0c;但是如何利用这个权限绕过打开局面呢&#xff1f;

一个思路突然出现了&#xff0c;我们可以利用fofa搜寻同样类型站点&#xff0c;利用弱口令进入同类型的站点后台&#xff0c;收集一波后台各种接口的URL,利用Shiro权限绕过的漏洞&#xff0c;将这些URL拼接在目标站点&#xff0c;达到未授权访问的目的&#xff01;

说干就干&#xff0c;利用弱口令进入了一个同类型的站点后台&#xff0c;收集到了一波接口的URL

在这里插入图片描述

接下来就要拼接目标站点了。

http://xxxxxx.com/;/xxxxx/xxxx/xxxx

在这里插入图片描述

在这里插入图片描述

成功访问到这些敏感的功能点了。

下一步&#xff0c;找到上传功能点&#xff0c;上传绕过&#xff0c;即可Getshell。

另外一种&#xff1a;uri中包含%25%32%66关键词

如果请求/hello/aaa那么将会被禁止&#xff1a;
在这里插入图片描述

但是这里我们可以通过url双编码的方式来绕过&#xff1a;

/ -> %2f ->%25%32%66

GET /hello/a%25%32%66a HTTP/1.1
Host: 127.0.0.1:8080
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:61.0) Gecko/20100101 Firefox/61.0
Accept: text/html,application/xhtml&#43;xml,application/xml;q&#61;0.9,*/*;q&#61;0.8
Accept-Language: zh-CN,zh;q&#61;0.8,zh-TW;q&#61;0.7,zh-HK;q&#61;0.5,en-US;q&#61;0.3,en;q&#61;0.2
Connection: close
Upgrade-Insecure-Requests: 1

在这里插入图片描述
成功绕过身份验证。

当然这个场景下需要一些限制条件&#xff0c;首先权限ant风格的配置需要是*而不是**&#xff0c;同时controller需要接收的request参数(&#64;PathVariable)的类型需要是String&#xff0c;否则将会出错。

其中中间的代码分析过程请看这篇文章&#xff1a;https://xlab.tencent.com/cn/2020/06/30/xlab-20-002/

总结一下&#xff0c;当进入应用后我们的请求页面被解析成/hello/a%2fa&#xff0c;所以它可以进入到spring controller中的/hello/{name}&#xff0c;但是因为shiro再次做了url解码&#xff0c;导致判断的uri成为了/hello/a/a 它不属于我们配置的权限判断地址/hello/*
此绕过核心原理可以归因为shiro与spring对RFC标准实现的差异。

转载http://www.0dayhack.net/index.php/554/


推荐阅读
  • JavaScript和HTML之间的交互是经由过程事宜完成的。事宜:文档或浏览器窗口中发作的一些特定的交互霎时。能够运用侦听器(或处置惩罚递次来预订事宜),以便事宜发作时实行相应的 ... [详细]
  • Spring源码解密之默认标签的解析方式分析
    本文分析了Spring源码解密中默认标签的解析方式。通过对命名空间的判断,区分默认命名空间和自定义命名空间,并采用不同的解析方式。其中,bean标签的解析最为复杂和重要。 ... [详细]
  • 向QTextEdit拖放文件的方法及实现步骤
    本文介绍了在使用QTextEdit时如何实现拖放文件的功能,包括相关的方法和实现步骤。通过重写dragEnterEvent和dropEvent函数,并结合QMimeData和QUrl等类,可以轻松实现向QTextEdit拖放文件的功能。详细的代码实现和说明可以参考本文提供的示例代码。 ... [详细]
  • Linux重启网络命令实例及关机和重启示例教程
    本文介绍了Linux系统中重启网络命令的实例,以及使用不同方式关机和重启系统的示例教程。包括使用图形界面和控制台访问系统的方法,以及使用shutdown命令进行系统关机和重启的句法和用法。 ... [详细]
  • android listview OnItemClickListener失效原因
    最近在做listview时发现OnItemClickListener失效的问题,经过查找发现是因为button的原因。不仅listitem中存在button会影响OnItemClickListener事件的失效,还会导致单击后listview每个item的背景改变,使得item中的所有有关焦点的事件都失效。本文给出了一个范例来说明这种情况,并提供了解决方法。 ... [详细]
  • 本文介绍了Web学习历程记录中关于Tomcat的基本概念和配置。首先解释了Web静态Web资源和动态Web资源的概念,以及C/S架构和B/S架构的区别。然后介绍了常见的Web服务器,包括Weblogic、WebSphere和Tomcat。接着详细讲解了Tomcat的虚拟主机、web应用和虚拟路径映射的概念和配置过程。最后简要介绍了http协议的作用。本文内容详实,适合初学者了解Tomcat的基础知识。 ... [详细]
  • 在重复造轮子的情况下用ProxyServlet反向代理来减少工作量
    像不少公司内部不同团队都会自己研发自己工具产品,当各个产品逐渐成熟,到达了一定的发展瓶颈,同时每个产品都有着自己的入口,用户 ... [详细]
  • 本文介绍了Android 7的学习笔记总结,包括最新的移动架构视频、大厂安卓面试真题和项目实战源码讲义。同时还分享了开源的完整内容,并提醒读者在使用FileProvider适配时要注意不同模块的AndroidManfiest.xml中配置的xml文件名必须不同,否则会出现问题。 ... [详细]
  • 本文介绍了如何在Mac上使用Pillow库加载不同于默认字体和大小的字体,并提供了一个简单的示例代码。通过该示例,读者可以了解如何在Python中使用Pillow库来写入不同字体的文本。同时,本文也解决了在Mac上使用Pillow库加载字体时可能遇到的问题。读者可以根据本文提供的示例代码,轻松实现在Mac上使用Pillow库加载不同字体的功能。 ... [详细]
  • 本文介绍了如何使用JSONObiect和Gson相关方法实现json数据与kotlin对象的相互转换。首先解释了JSON的概念和数据格式,然后详细介绍了相关API,包括JSONObject和Gson的使用方法。接着讲解了如何将json格式的字符串转换为kotlin对象或List,以及如何将kotlin对象转换为json字符串。最后提到了使用Map封装json对象的特殊情况。文章还对JSON和XML进行了比较,指出了JSON的优势和缺点。 ... [详细]
  • 图像因存在错误而无法显示 ... [详细]
  • EPPlus绘制刻度线的方法及示例代码
    本文介绍了使用EPPlus绘制刻度线的方法,并提供了示例代码。通过ExcelPackage类和List对象,可以实现在Excel中绘制刻度线的功能。具体的方法和示例代码在文章中进行了详细的介绍和演示。 ... [详细]
  • ShiftLeft:将静态防护与运行时防护结合的持续性安全防护解决方案
    ShiftLeft公司是一家致力于将应用的静态防护和运行时防护与应用开发自动化工作流相结合以提升软件开发生命周期中的安全性的公司。传统的安全防护方式存在误报率高、人工成本高、耗时长等问题,而ShiftLeft提供的持续性安全防护解决方案能够解决这些问题。通过将下一代静态代码分析与应用开发自动化工作流中涉及的安全工具相结合,ShiftLeft帮助企业实现DevSecOps的安全部分,提供高效、准确的安全能力。 ... [详细]
  • 【爬虫】关于企业信用信息公示系统加速乐最新反爬虫机制
    ( ̄▽ ̄)~又得半夜修仙了,作为一个爬虫小白,花了3天时间写好的程序,才跑了一个月目标网站就更新了,是有点悲催,还是要只有一天的时间重构。升级后网站的层次结构并没有太多变化,表面上 ... [详细]
  • adfs是什么_培训与开发的概念
    adfs是什么_培训与开发的概念(如您转载本文,必须标明本文作者及出处。如有任何疑问请与我联系me@nap7.com)ADFS相关开发技术的中文资料相对匮乏,之前在弄这个东西的时候 ... [详细]
author-avatar
高高G0623
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有