13.1什么是反序列化
就是把一个对象变成可以传输的字符串,目的就是为了方便传输。假设,我们写了一个class,这个class里面存有一些变量。当这个class被实例化了之后,在使用过程中里面的一些变量值发生了改变。以后在某些时候还会用到这个变量,如果我们让这个class一直不销毁,等着下一次要用它的时候再一次被调用的话,浪费系统资源。当我们写一个小型的项目可能没有太大的影响,但是随着项目的壮大,一些小问题被放大了之后就会产生很多麻烦。这个时候PHP就和我们说,你可以把这个对象序列化了,存成一个字符串,当你要用的时候再放他出来就好了。在我们讲PHP反序列化的时候,基本都是围绕着serialize(),unserialize()这两个函数。
13.2安全防范
1)安全配置好php相关参数
通过Php配置文件里面有个disable_functions = 配置,这个禁止某些php函数,
服务器便是用这个来禁止php的执行命令函数。
例如:
disable_functions =system,passthru,shell_exec,exec,popen
便禁止了用这些函数来执行系统命令
2)升级中间件
3)严格控制传入变量,严谨使用魔法函数
13.3常见的反序列化漏洞
php反序列化
jboss反序列化
weblogic反序列化
13.4常用工具
k8_status2
status2漏洞利用工具