[Web 安全] 反序列化漏洞 - 学习笔记
关注这个专栏的其他相关笔记:[Web 安全] Web 安全攻防 - 学习手册-CSDN博客
0x01:反序列化漏洞 — 漏洞介绍
反序列化漏洞是一种常见的安全漏洞,主要出现在应用程序将 序列化数据 重新转换为对象(即反序列化)的过程中,在讲解这个漏洞前,我们先了解一下什么是 序列化 & 反序列化:
-
序列化: 序列化就是将对象的状态信息转换为可以存储或传输的形式的过程。
-
反序列化: 将序列化后的数据还原为原始对象的过程。
0x0101:反序列化漏洞原理
当程序反序列化不可信的输入数据 时,若未严格校验数据合法性,攻击者就可能构造恶意数据,诱使程序执行非预期操作,例如:
-
执行任意代码: 反序列化时触发对象中的危险方法(如 Java 的
readObject
、PHP 的__wakeup
) -
篡改数据逻辑: 修改序列化数据中的关键参数(如用户权限、身份标识)。
-
拒绝服务攻击: 通过构造畸形数据导致程序崩溃。
0x0102:反序列化漏洞防御措施
-
避免反序列化不可信数据:优先使用 JSON 等安全格式传输数据。
-
白名单验证:仅允许反序列化预定义的合法类。
-
数据签名/加密:验证序列化数据的完整性和来源。
-
更新依赖库:修复已知漏洞的第三方组件(如Java的Apache Commons Collections)。
0x02:反序列化漏洞 — PHP 反序列化漏洞
0x0201:PHP 反序列化漏洞 — 基础知识
-
PHP 反序列化漏洞 —— PHP 面向对象基础知识
-
PHP 反序列化漏洞 —— PHP 序列化 & 反序列化
-
PHP 反序列化漏洞 —— PHP 反序列化漏洞演示案例
0x0202:PHP 反序列化漏洞 — 挖掘思路
-
PHP 反序列化漏洞 —— PHP 魔法方法 & POP 链构造思路
-
PHP 反序列化漏洞 —— WAF 绕过姿势