shiro漏洞复现及其攻击流量分析

news2025/1/18 12:00:48

前言

最近面试时经常被问到,每次说的都不太完美,现在再来复现一边。

shiro介绍

Apache Shiro是一个开源安全框架,提供身份验证、授权、密码学和会话管理。

CVE-2016-4437

利用vulhub搭建的靶场。

在Apache Shiro <= 1.2.4版本中存在反序列化漏洞。

该漏洞成因在于,Shiro的“记住我”功能是设置cookie中的rememberMe值来实现。当我们给rememberMe赋值时,它会经过一下过程。

  1. 检索cookie中RememberMe的值
  2. Base64解码
  3. 使用AES解密
  4. 反序列化

当我们知道了AES加解密时的密钥(该密钥是写死在代码中)时,我们便可以去修改rememberMe的值,改造其readObject()方法,让其在反序列化时执行任意操作。

服务器接收数据后的流程为

  1. 读取cookie中rememberMe值
  2. base64解码
  3. AES解密
  4. 反序列化

使用工具来执行命令。

image-20230409134603547

利用wireshark来抓取流量。

image-20230409134643553

image-20230409134652305

回显时会有一串base64加密的值,代表着命令执行成功。

image-20230409134742636

总结:CVE-2016-4437的攻击流量特征有

  1. 请求包Cookie的rememberMe中会存在AES+base64加密的一串java反序列化代码。
  2. 返回包中存在base64加密数据,该数据可作为攻击成功的判定条件。

如果攻击者利用其反弹shell,还可以通过对rememberMe中的数据解码来获得反弹的ip地址。

shrio550和721的区别

  1. 主要区别在于Shiro550使用已知默认密码,只要有足够的密码,不需要Remember Cookie的
  2. Shiro721的ase加密的key为系统随机生成,需要利用登录后的rememberMe去爆破正确的key值。利用有效的RememberMe Cookie作为Padding Oracle Attack的前缀,再去构造反序列化攻击。

CVE-2020-1957

在Spring web项目中,请求URI/resource/menus和/resource/menus/都可以访问到服务器的资源。

但在Shiro中的URL路径表达式pathPattern可以正确匹配/resource/menus,但不能正确匹配/resource/menus/,导致过滤链无法正确匹配,从而绕Shiro的防护机制

直接访问/xxx/…;/admin/可以绕过权限校验访问到管理页面

image-20230409183223703
该漏洞的流量分析只能去看请求头加ip的访问频繁次数来判断是否为测试。
image-20230409183453682

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

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

相关文章

Servlet 之超详解【2023年最新版】

编译软件&#xff1a;IntelliJ IDEA 2019.2.4 x64 操作系统&#xff1a;win10 x64 位 家庭版 服务器软件&#xff1a;apache-tomcat-8.5.27 目录 一. 什么是Servlet&#xff1f;二. 如何编写第一个servlet程序&#xff1f;三. Servlet的生命周期四. Servlet的技术体系五. web项…

Flutter Animation 动画

前言 &#xff1a; 在Flutter 中&#xff0c;做动画离不开这么一个类&#xff0c;那就是 Animation 这个类如往常一样&#xff0c;也是一个抽象类。 abstract class Animation<T> extends Listenable implements ValueListenable<T> 整个animation.dart 文件只有…

Windows和IDEA安装Scala

一、Windows安装Scala 前提&#xff1a;Windows已经安装好JDK1.8 第一步&#xff0c;下载对应的 Scala 安装文件 scala-2.12.11.zip (尚硅谷资料里有。直接获取&#xff09; 第二步&#xff0c;解压scala-2.12.11.zip 注意自己解压的目录&#xff0c;我这里解压到D盘java文…

3、ThingsBoard使用jar包单机部署

1、概述 前面一节我讲了如何初始化数据库表结构以及默认的数据。这一节我将讲解如何使用jar包部署。 2、部署 2.1、修改thingsboard.yml配置 上一节我已经讲解了thingsboard.yml中的基础配置,基础的组件配置如何redis、kafka、Cassandra、pg等大家都知道,关键的地方是在于…

Zimbra 远程代码执行漏洞(CVE-2019-9670)漏洞分析

Zimbra 远程代码执行漏洞(CVE-2019-9670)漏洞分析 漏洞简介 Zimbra是著名的开源系统&#xff0c;提供了一套开源协同办公套件包括WebMail&#xff0c;日历&#xff0c;通信录&#xff0c;Web文档管理和创作。一体化地提供了邮件收发、文件共享、协同办公、即时聊天等一系列解决…

主 存储器

主存储器 概述 实际上在主存储器运作时&#xff0c;根据MAR中的地址访问某个存储单元时&#xff0c;还需经过地址译码、驱动等电路才能找到所需的访问单元。读出时需经过读出放大器&#xff0c;才能将被选中单元的存储字送到MDR。写入时&#xff0c;MDR中的数据也必须经过写入…

课程简介:.Net Core从零学习搭建权限管理系统

课程简介目录 &#x1f680;前言一、课程背景二、课程目的三、系统功能四、系统技术架构五、课程特点六、课程适合人员七、课程规划的章节八、最后 &#x1f680;前言 本文是《.Net Core从零学习搭建权限管理系统》教程专栏的导航站&#xff08;点击链接&#xff0c;跳转到专栏…

【运动规划算法】路径规划中常用的插值方法

文章目录 简介一、线性插值二、三次样条插值三、B样条插值四、贝塞尔曲线插值总结 简介 常见用于处理路径平滑的插值算法主要包括线性插值、三次样条插值、B样条插值和贝塞尔曲线插值等&#xff0c;下面分别介绍它们的优缺点和使用场景。 一、线性插值 线性插值是最简单的插值…

【主流Chat模型的申请入口和方法】

主流Chat模型的申请入口和方法 一、申请New Bing二、申请内测文心一言三、申请内测Claude四、谷歌家的Bard五、Adobe Firefly六、GitHub Copilot chat七、通义千问八、360智脑 一、申请New Bing 注册一个 outlook 邮箱&#xff0c;很简单&#xff0c;2分钟就可搞定&#xff5e…

操作系统(2.7)--进程

目录 一、进程的引入 1.进程的两个基本属性 2.程序并发执行所需付出的时空开销 3.线程---作为调度和分派的基本单位 二、线程(轻型进程)与进程(重型进程)的比较 1&#xff09;调度的基本单位 2&#xff09;并发性 3&#xff09;拥有资源 4&#xff09;独立性 5&#…

离线数仓的数仓分层

数据仓库分层的作用 数据结构化更清晰&#xff1a; 对于不同层级的数据&#xff0c;他们作用域不相同&#xff0c;每一个数据分层都有它的作用域&#xff0c;这样我们在使用表的时候能更方便地定位和理解。 数据血缘追踪&#xff1a; 提供给外界使用的是一张业务表&#xf…

Material Design:为你的 Android 应用提供精美的 UI 体验

Material Design&#xff1a;为你的 Android 应用提供精美的 UI 体验 介绍 Material Design 概念&#xff1a;介绍 Material Design 是 Google 推出的一种设计语言&#xff0c;用于创建现代、美观、直观且一致的用户界面。解释 Material Design 的基本原则&#xff0c;包括材料…

9、MachO简介

一、MachO文件 MachO其实是Mach Object文件格式的缩写,是Mac以及iOS上可执行文件的格式,类似于windows上的PE格式(Portable Executable), linux上的elf格式(Executable and Linking Format) 二、MachO文件结构 Mach-O为Mach Object文件格式的缩写,它是一种用于可执行文件、目…

fileclude(文件包含漏洞及php://input、php://filter的使用)

先介绍一些知识 1、文件包含漏洞 和SQL注入等攻击方式一样&#xff0c;文件包含漏洞也是一种注入型漏洞&#xff0c;其本质就是输入一段用户能够控制的脚本或者代码&#xff0c;并让服务端执行。 什么叫包含呢&#xff1f;以PHP为例&#xff0c;我们常常把可重复使用的函数写…

Pytorch实现FCN图像语义分割网络

针对图像的语义分割网络&#xff0c;本节将介绍PyTorch中已经预训练好网络的使用方式&#xff0c;然后使用VOC2012数据集训练一个FCN语义分割网络。 一、使用预训练好的语义分割网络 PyTorch提供了已预训练好的图像语义分割网络&#xff0c;已经预训练好的可供使用的网络模型…

Java 对象的创建过程面试总结

Java对象创建的过程 Java对象创建的过程主要分为五个步骤&#xff0c;下面我将详细介绍这五个步骤。 Step1:类加载检查 虚拟机遇到一条new指令时&#xff0c;首先会去检查这个指令的参数是否能在class文件中的常量池中定位到这个类的符号引用&#xff0c;并且会检查这个符号…

unplugin-vue-components 源码原理分析

unplugin-vue-components 是一款按需自动导入Vue组件的库。支持 Vue2 和 Vue3&#xff0c;同时支持组件和指令。使用此插件库后&#xff0c;不再需要手动导入组件&#xff0c;插件会自动识别按需导入组件以及对应样式&#xff0c;我们只需要像全局组件那样使用即可。 当然上面…

深入谈谈内存压缩那些事!

1. 技术背景 说到压缩这个词&#xff0c;我们并不陌生&#xff0c;应该都能想到是降低占用空间&#xff0c;使同样的空间可以存放更多的东西&#xff0c;类似于我们平时常用的文件压缩,内存压缩同样也是为了节省内存。 尽管当前android手机6GB&#xff0c;8GB甚至12GB的机器都…

两个月15斤以上的健康减脂减重法,与饥饿、运动等无关的自我实验的验证方法(第六篇完结,无收费内容)...

阅读本文前请先看前五篇内容&#xff0c;本文有部分修改&#xff0c;但是涉及前五篇的内容会大量隐藏&#xff0c;只保留关联修改部分&#xff0c;链接如下&#xff1a; 两个月15斤以上的健康减脂减重法&#xff0c;与饥饿、运动等无关的自我实验的验证方法&#xff08;第五篇&…

OpenCascade安装编译

重新编译OpenCascade&#xff0c;在漫长的等待过程中&#xff0c;记录一下编译的流程 下载安装 OpenCascade官网中提供了直接安装的二进制版本&#xff0c;如果只是简单的使用需求可以直接下载安装&#xff0c;二进制版本使用VC 2017 64 bit编译 官网地址 源码编译 源码编…