
回复
这篇文章主要为大家介绍了CVE-2020-15148分析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
目录
基础知识
Yii2
魔术方法
分析
结语
基础知识
在学习该漏洞之前我们需要学习一下前置知识来更好的理解该漏洞的产生原因以及如何利用。 我们先来学习一下框架的基本信息以及反序列化的基本利用过程。
Yii2
Yii是一个基于组件的高性能PHP框架,用于开发大型Web应用。Yii采用严格的OOP编写,并有着完善的库引用以及全面的教程。而CVE-2020-15148则是在其版本YII2.0.38之前的一个反序列化,该漏洞在调用unserialize时,攻击者可通过构造特定的恶意请求执行任意命令,这也是常见的反序列化的利用过程。
魔术方法
提到PHP反序列化一定离不开魔术方法,这些方法通常会在达到一些特殊条件后就会执行,举个例子:
__construct() //新建对象时调用
我们编写下面的代码:
当我们执行时new了一个类,这就会调用里面的魔术方法,从而输出语句。当然这只是最简单的魔术方法,下面给大家一个列表来进行参考:
了解完以上知识点后我们开始对该进行分析。
分析
首先我们要搭建环境,最好搭建在本地方便调试,源码地址如下:
搭建完后我们首先找到切入点,也就是可能存在威胁的地方,结合上面对魔术方法的分析在 /vendor/yiisoft/yii2/db/BatchQueryResult.php下找到了可能存在的点,因为里面有个魔术方法在对象销毁时调用:
__destruct()调用了reset()方法,方法里面的$this->_dataReader是可控的: