是反序列化的所有系统真的不安全?(Is unserialize really unsafe for

2019-10-19 14:38发布

根据该文件 ,它是不安全与不信任的输入使用unserialize。

作为测试,我写道:

<?php
global $secret;
$secret = 'SuperSecret';

class Thing {

    public static function __wakeup() {
        var_dump($GLOBALS);
    }

    public function __unserialize() {
        return 'okay';
    }
}

if (isset($_GET['s'])) {
    echo 'serializing=';
    echo serialize(new Thing() );
}

$unser = unserialize($_GET['thing']);

?第一次去S,那么就说明:O:5: “东西”:0:{}

转到事= O:5:“东西”:0:{},它会显示所有的全局变量 - 安全风险?

但是,如果有任何类,它具有这样的不安全__wakeup()函数? 是不是反序列化对于不具备“不安全” __wakeup功能(绝大多数)系统安全吗?

Answer 1:

下面是它的好文章。

https://www.alertlogic.com/writing-exploits-for-exotic-bug-classes/

基本上,反序列化可以用来重写或者改变对PHP或脚本重要的类。



文章来源: Is unserialize really unsafe for all systems?