网安60秒丨反序列化漏洞
网安60秒丨反序列化漏洞
原创 小白学安全 小白学安全 2025-02-15 23:00
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链)
攻击流程:
-
构造恶意序列化数据。
-
触发反序列化,执行任意代码。
2、PHP反序列化
利用链:魔术方法__wakeup()、__destruct()。
3、Python反序列化漏洞
利用链:__reduce__魔术方法
05
防护措施
1、禁用危险函数。
2、输入验证:白名单校验。
3、系统层:沙箱隔离。
06
真实案例
某云平台漏洞
漏洞点:Kubernetes API未过滤反序列化数据。
后果:删除了生产环境所有容器,导致全球服务中断6小时。
07
思考题
某网站过滤了所有非数字和.字符,如何执行Linux系统中的id命令?
08
下期预告
《网安60秒丨JWT攻击》