Thinkphp 5.0.24存在反序化漏洞,入口点在thinkphp/library/think/process/pipes/Windows.php中__destruct魔术方法。
网上有很多讲解如何利用这个漏洞进行攻击,百度Thinkphp 5.0.24反序化漏洞会出来一堆。
但是如何修复这个漏洞没有讲解,我去Thinkphp 官网上也没有查到,我的建议一个是升级Thinkphp版本。
下面是我的修复方案:
第1种方案:修改removeFiles方法如下:
/**
* 删除临时文件
*/
private function removeFiles()
{
foreach ($this->files as $filename) {
if(is_object($filename)){
continue;
}
if (file_exists($filename)) {
@unlink($filename);
}
}
$this->files = [];
}
第2种方案:在Windows.php中添加两个方法
public function __sleep()
{
throw new Exception('Cannot serialize '.__CLASS__);
}
public function __wakeup()
{
throw new Exception('Cannot unserialize '.__CLASS__);
}