一、先搞懂两个词
- 序列化 :把对象 / 数据变成字符串,方便传输或存起来。
- 反序列化 :把字符串还原成原来的对象 / 数据。
漏洞就是:黑客传了恶意构造的字符串,服务器还原时,直接执行了恶意代码。
二、核心原理
- 网站接收用户传入的序列化字符串
- 没做安全校验,直接反序列化
- 字符串里藏了恶意代码 / 命令
- 一还原,代码就自动执行
一句话:把恶意数据当 "合法对象" 执行。
三、危害(非常大)
- 直接getshell(拿下服务器权限)
- 执行任意命令
- 删库、拖库、控制服务器
- 常出现在:Java、PHP、Python 等语言
四、和其他漏洞区别
- XSS/CSRF:搞用户
- 越权:看别人数据
- 反序列化:直接搞服务器
五、防御方法
- 不相信用户传入的序列化数据
- 加签名 / 校验,防止被篡改
- 禁用危险函数、过滤恶意类
- 尽量不用反序列化处理外部数据