网安60秒丨反序列化漏洞

网安60秒丨反序列化漏洞

原创 小白学安全 小白学安全 2025-02-15 23:00

deserialization-infographic.jpg

01

定义

想象一下,你有一个复杂的玩具(对象),为了方便存放,你把它拆成零件(序列化)。当你需要玩的时候,再把零件拼回去(反序列化)。

  • 序列化:将对象(如Java对象、PHP数组)转换为字符串或二进制数据,便于存储或传输。

  • 反序列化:将字符串或二进制数据还原为对象。

  • 漏洞核心:攻击者通过篡改序列化数据,在反序列化时触发恶意代码执行。

02

危害

  • 读取敏感文件:/etc/passwd、数据库配置文件。

  • 执行系统命令:删除文件、植入后门。

  • 反弹Shell:完全控制服务器。

03

函数

  • Java:ObjectInputStream.readObject()。

  • PHP:unserialize()。

  • Python:pickle.loads()。

  • .NET:BinaryFormatter.Deserialize()。

04

示例

1、经典案例:Apache Commons Collections(CC链)

攻击流程:

  • 构造恶意序列化数据。

  • 触发反序列化,执行任意代码。

image.png

2、PHP反序列化

利用链:魔术方法__wakeup()、__destruct()。

image.png

3、Python反序列化漏洞

利用链:__reduce__魔术方法

image.png

05

防护措施

1、禁用危险函数。

image.png

2、输入验证:白名单校验。

3、系统层:沙箱隔离。

06

真实案例

某云平台漏洞

漏洞点:Kubernetes API未过滤反序列化数据。

后果:删除了生产环境所有容器,导致全球服务中断6小时。

07

思考题

某网站过滤了所有非数字和.字符,如何执行Linux系统中的id命令?

08

下期预告

《网安60秒丨JWT攻击》