反序列化漏洞问题研究之php篇

时间:2022-11-26 14:42:57

php的反序列化反序列化漏洞又称php对象注入(php Object Injection)产生的问题主要分以下两类:

  1. 将传来的序列化数据直接unserilize,造成魔幻函数的执行。这种情况在一般的应用中依然屡见不鲜。
  2. PHP Session 序列化及反序列化处理器设置不当会带来的安全隐患。(这个在乌云上之前已有文章有比较详细的介绍)

php的反序列化主要是unserialize代码执行,需要满足两个条件

  1. unserialize()的参数用户可以控制,这样就可以构造出需要反序列化的数据结构。
  2. 存在__destruct()或者__wakeup()这样的魔术函数,魔术函数实现的逻辑决定了能执行什么样的代码。

防范:

不用使用serialize()和unserialize(),使用json_encode和json_decode()也可以达到相同的目的,如果使用了序列化,那么久不要将用户提交的数据传到unserialize()中去。