网络安全常见漏洞篇——反序列化漏洞,从零基础到精通,收藏这篇就够了!

反序列化(Unserialize)漏洞详解 序列化和反序列化漏洞分析   序列化(serialize) 就将对象的状态信息转换为可以存储或传输的形式的过程 在序列化期间,对象将当前的状态写入到临时或持久性的存储区 【将状态信息保存为字符串】。   反序列化(unserialize) 就是把序列化之后的字符串在转化为对象。 其实在序列化的过程中是没有任何的漏洞的,产生漏洞的主要的原因就是在反序列化的过程中,通过我们的恶意篡改会产生魔法函数绕过,字符逃逸,远程命令执行等漏洞,最早发现这些漏洞的大佬是真的牛。 一、简单的魔法函数 魔法函数 调用 阅读详情

网络安全常见漏洞篇

反序列化漏洞

反序列化漏洞(Deserialization Vulnerability)是一种安全漏洞,存在于应用程序中对数据进行反序列化操作的过程中。当应用程序接收到外部传递的恶意序列化数据并进行反序列化时,攻击者可以利用这个漏洞执行未经授权的代码或导致应用程序受到攻击。

01

反序列化漏洞原理

要了解反序列化漏洞,首先我们得知道什么是序列化和反序列化,简单来说序列化:就是将对象转化为字符串进行存储;反序列化:就是将字符串转化为对象;反序列化漏洞:就是在反序列化过程中,如果恶意者可以对将要转换的字符串进行操控,从而达到任意代码执行的操作,就是反序列化漏洞。

反序列化漏洞的主要原理是应用程序在反序列化过程中没有对传入的数据进行足够的验证和过滤,导致攻击者可以利用构造的恶意序列化数据来执行任意代码或远程代码执行攻击。

一般情况下,应用程序在接受到序列化数据后会使用反序列化操作将数据还原成对象。反序列化操作通常涉及到解析输入流,创建对象实例,读取对象属性等操作,在这个过程中,应用程序需要根据序列化的格式和规范来还原对象的状态。而攻击者可以通过构造特定的序列化数据来利用应用程序中的反序列化操作,从而实现代码注入和执行。

例如,攻击者可以构造恶意的Java序列化数据,其中包含可执行的Java代码,当应用程序使用反序列化操作将该数据还原成对象时,就会执行其中的恶意代码,造成安全威胁。

为了利用反序列化漏洞,攻击者需要了解目标应用程序所使用的序列化库和协议,以及应用程序如何处理序列化数据。攻击者可以通过手动构造序列化数据或利用已有的工具来生成恶意序列化数据。

02

反序列化漏洞简单案例

以下以pikachu靶场中一个简单的反序列化漏洞案例来说明:

序列化serialize()

序列化说通俗点就是把一个对象变成可以传输的字符串,比如下面是一个对象:

class S{`    `public $test="pikachu";``}``   ``$s=new S();     //创建一个对象``   ``serialize($s);     //把这个对象进行序列化``   ``序列化后得到的结果是这个样子的:O:1:"S":1:{s:4:"test";s:7:"pikachu";}`    `O:代表object`    `1:表示该对象的类名的字节数(即类名长度为1)`    `S:对象的名称`    `1:表示该对象有 1 个属性。`    `s:数据类型`    `4:变量名称的长度`    `test:变量名称`    `s:数据类型`    `7:变量值的长度`    `pikachu:变量值

反序列化unserialize()

就是把被序列化的字符串还原为对象,然后在接下来的代码中继续使用。

$u=unserialize("O:1:"S":1:{s:4:"test";s:7:"pikachu";}");``   ``echo $u->test; //得到的结果为pikachu

序列化和反序列化本身没有问题,但是如果反序列化的内容是用户可以控制的,且后台不正当的使用了PHP中的魔法函数,就会导致安全问题。

pikachu内反序列化漏洞靶场页面如下:

当我们输入序列化数据

O:1:"S":1:{s:4:"test";s:7:"pikachu";}

此时反序列化函数将输入的序列化数据还原为了对象。

如果攻击者在此输入页面中输入恶意代码,则会被该反序列化函数还原为对象,进行执行。

如结合XSS漏洞,在该输入框内输入:

O:1:"S":1:{s:4:"test";s:30:"<script>alert('haha')</script>";}

则会弹出XSS攻击页面

03

反序列化漏洞的危害

黑客通常会利用反序列化漏洞来执行远程代码执行攻击或实现任意代码执行。反序列化漏洞的危害包括但不限于:

  1. 执行任意代码:攻击者可以利用反序列化漏洞来注入恶意代码,从而执行任意操作,比如篡改数据、窃取敏感信息等。

  2. 拒绝服务攻击:攻击者可以构造大量的恶意序列化数据,来消耗程序的资源,使其无法正常运行。

  3. 身份伪造:攻击者可以篡改序列化数据,以伪造身份,来绕过认证机制。

  4. 数据泄露:攻击者可以通过注入恶意代码来窃取程序中存储的敏感信息,比如用户凭证、密码等。

04

反序列化漏洞的防范策略

常见的反序列化漏洞函数通常是应用程序中用于反序列化操作的函数或方法。由于不同的编程语言和框架在序列化和反序列化方面有各自的特点,因此反序列化漏洞函数也会有所不同。以下是一些常见的反序列化漏洞函数:

Java 中的 ObjectInputStream.readObject():ObjectInputStream 类的 readObject() 方法用于将序列化的对象数据还原成实际的对象实例。如果未对传入的序列化数据进行充分验证和过滤,攻击者可以构造恶意的序列化数据来执行任意代码。

PHP 中的 unserialize():PHP 中的 unserialize() 函数用于将序列化的字符串转换为 PHP 变量。如果应用程序在接收用户输入后直接使用 unserialize() 函数进行反序列化操作,而没有对输入进行严格的验证和过滤,就可能存在反序列化漏洞。

.NET 中的 BinaryFormatter.Deserialize():在.NET Framework 中,BinaryFormatter 类的 Deserialize() 方法用于将二进制数据反序列化为对象。如果应用程序在使用 BinaryFormatter 进行反序列化时没有实施有效的安全措施,就可能受到反序列化攻击。

为了防止反序列化漏洞的利用,可以采取以下措施:

输入验证和过滤:对于外部传入的序列化数据,应该进行严格的输入验证和过滤,确保数据的来源可信和完整。

应用程序安全配置:在应用程序的安全配置中,禁用或限制不必要的反序列化操作,只允许从受信任的源进行反序列化。

使用安全的序列化库:选择使用安全性较高的序列化库,这些库通常提供了更多的安全特性和保护机制。

持续更新和修补:及时更新和修补应用程序中使用的序列化库,以确保已知的反序列化漏洞得到修复。

检测和监控:实施日志记录和监控机制,及时检测和响应可能的反序列化攻击。

学习资源

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

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

1、知识库价值

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

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

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

2、 部分核心内容展示

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

在这里插入图片描述

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

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

1、网络安全意识

img

2、Linux操作系统

img

3、WEB架构基础与HTTP协议

img

4、Web渗透测试

img

5、渗透测试案例分享

img

6、渗透测试实战技巧

图片

7、攻防对战实战

图片

8、CTF之MISC实战讲解

图片

3、适合学习的人群

‌一、基础适配人群‌

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

‌二、能力提升适配‌

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

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

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

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

在这里插入图片描述

反序列化漏洞详解 目录 一、什么是序列化和反序列化 二、什么是反序列化漏洞 三、序列化函数(serialize) 四、反序列化(unserialize) ​五、什么是PHP魔术方法 六、一些常见的魔术方法 七、魔术方法的利用 八、反序列化漏洞的利用 1.__destruct()函数 2.__wakeup() 3.toString() ​九、反序列化漏洞的防御 一、什么是序列化和反序列化 序列化是将对象转换为字符串以便存储传输的一种方式。而反序列化恰好就是序列化的逆过程,反序列化会将字符串. 阅读详情

相关推荐

反序列化漏洞汇总

JAVA反序列化、PHP反序列化,场景容器反序列化利用过程

buffedon的博客 5308

网络安全常见漏洞篇——反序列化漏洞

要了解反序列化漏洞,首先我们得知道什么是序列化和反序列化,简单来说序列化:就是将对象转化为字符串进行存储;反序列化:就是将字符串转化为对象;反序列化漏洞:就是在反序列化过程中,如果恶意者可以对将要转换的字符串进行操控,从而达到任意代码执行的操作,就是反序列化漏洞。反序列化漏洞的主要原理是应用程序在反序列化过程中没有对传入的数据进行足够的验证和过滤,导致攻击者可以利用构造的恶意序列化数据来执行任意代码或远程代码执行攻击。一般情况下,应用程序在接受到序列化数据后会使用反序列化操作将数据还原成对象。

ewii12567的博客 5111

电商平台大数据分析指标

一、五大关键数据分析指标 1.1活跃用户量 活跃用户量是一个基本的指标,有 DAU(日活跃用户)、WAU(周活跃用户)和 MAU(月活跃用户)三个层次; 1.2转化 转化是一个非常重要的指标,电商运营需要关注主路径、次路径甚至精细到每一个品类 / SKU 的转化率; 1.3留存 留存要从不同的时间周期上研究,包括次日留存率、3 日、7 日、30 日留存; 1.4复购 复购则要从 3 个角度去看,复购用户量、复购率和复购金额比; 1.5GMV GMV 是最重要的指标,我们的运营最终是围绕这

默主归沙的博客 4820

网络安全常见十大漏洞总结(原理、危害、防御)非常详细,从零基础到精通,收藏这篇就够了!

在数字化时代,网络安全已成为个人和企业不可忽视的重要议题。了解常见的网络安全漏洞,掌握其原理、危害及防御方法,是构筑数字防线的第一步。本文将帮助您提升安全意识,有效防范网络威胁。

hackeroink的博客 1497

西门子1200数据块BD详解

定义 DB(Data Block)是用于存储用户数据的区域,分为两种类型:核心作用 四、DB块的访问方式 1. 全局DB访问 符号访问(优化块): 绝对地址访问(非优化块):(假设SetPoint占用2字节) 2. 背景DB访问 与FB关联后自动生成,通过FB调用时传递: 五、高级功能与注意事项 数据块的初始化运行时修改DB数据块的下载常见问题 通过合理使用DB块,可显著提升程序的可读性和可维护性。建议优先启用优化块访问并使用符号名编程。如何使用DB数据块 数据块用于存储程序数据。因此,数据块

weixin_51020122的博客 3430

保姆级教程:用Python和PyTorch复现PTB-XL心电信号分类论文(附完整代码)

本文提供了一份详细的PTB-XL心电信号分类教程,涵盖从数据预处理到模型优化的完整流程。通过PyTorch实现三种深度学习架构(Conv1D、SincNet和熵特征融合网络),并针对医疗AI特有的类别不平衡问题提供解决方案。教程包含可运行的代码示例,帮助开发者快速复现论文结果并应用于实际心电信号分析场景。

weixin_30555125的博客 405

WEB常见漏洞之反序列化,从零基础到精通,收藏这篇就够了!

序列化 (serialize)是将对象的状态信息转换为可以存储或传输的形式的过程。在序列化期间,对象将其当前状态写入到临时或持久性存储区。以后,可以通过从存储区中读取或反序列化对象的状态,重新创建该对象。【将状态信息保存为字符串】简单的理解:将PHP中 对象、类、数组、变量、匿名函数等,转化为字符串,方便保存到数据库或者文件中。

leah126的博客 981

BU61580芯片实战:手把手教你配置1553B通信的BC端寄存器(含代码解析)

本文详细解析了BU61580芯片在1553B通信中的BC端寄存器配置方法,包括关键寄存器功能映射、初始化代码解析及回环测试实现。通过实战案例和代码示例,帮助开发者快速掌握1553B通信的核心技术,提升系统稳定性和通信质量。

a1b2c的博客 226

Web漏洞 | JAVA反序列化漏洞,从零基础到精通,收藏这篇就够了!

反序列化漏洞序列化和反序列化反序列化漏洞payloadJAVA Web反序列化漏洞的挖掘和利用Part 1反序列化漏洞JAVA反序列化漏洞到底是如何产生的?1、由于很多站点或者RMI仓库等接口处存在java的反序列化功能,于是攻击者可以通过构造特定的恶意对象序列化后的流,让目标反序列化,从而达到自己的恶意预期行为,包括命令执行,甚至 getshell 等等。2、Apache Commons Collections是开源小组Apache研发的一个 Collections 收集器框架。

yy1715713348的博客 1162

MuMu模拟器过检测实战:从硬件伪装到API欺骗的完整避坑指南

本文详细介绍了MuMu模拟器过检测的实战技术,从硬件伪装到API欺骗的全方位解决方案。通过修改CPU/GPU信息、内存分布、系统属性和行为模拟等关键技术,帮助用户有效绕过现代应用的模拟器检测机制,提升模拟器的隐蔽性和稳定性。

xxx12的博客 1410

基于PPT的三维光路结构示意图绘制实例演示-技术细节

基于PPT的三维光路结构示意图绘制实例演示-技术细节

简单光学 7481

一文掌握Java反序列化漏洞,从零基础到精通,收藏这篇就够了!

如果你自定义了一个。

yy1715713348的博客 1109

K230在原有LVGL控件触摸屏控制的基础上,增加USB鼠标控制!

搭配CanMV图形化编程,中小学生可快速开发“键鼠控制AI小游戏”“智能画板”等趣味项目,降低AI学习门槛;:HDMI屏幕+键鼠组合,直接在开发板上调试代码、修改ISP参数、查看AI推理日志,无需频繁连接电脑;:打造带交互的AI设备(如工业控制面板、智能显示器),鼠标操作菜单、键盘输入指令,体验媲美小型PC;:无网络场景下,通过键盘直接向AI设备录入数据、配置参数,适配野外监测、本地工控等场景。,自动识别、快速响应,完美适配交互控制、参数调试、数据输入等场景。

weixin_47446386的博客 149
上一篇: 手把手教你如何进行内网渗透:从零基础到实战突破(非常详细)从零基础入门到精通,收藏这篇就够了
下一篇: 什么是CSRF攻击,该如何防护CSRF攻击
网络安全_入门教程
博客等级 码龄4年 1万+粉丝 2151原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值