华科CMSV1.1文件包含漏洞代码分析
2020-02-27 00:06:53 Author: forum.90sec.com(查看原文) 阅读量:190 收藏

漏洞名称:华科CMSV1.1文件包含漏洞

版本:华科CMSV1.1

漏洞危害:高危

代码分析:

造成该漏洞的原因,我们主要看两个点,一个是源码中, /admin/cms_channel_add.php 文件和 channel.php

我们先分析 /admin/cms_channel_add.php

该文件主要负责的是频道的增加。

先来看代码的 175行193行 ,在两个input标签的写入一个文件名的内容作为引入的模板类型。

主要关注 nmodeldmodel 这两个。

image-20191222170021207
image-20191222170613679

那么如果说正常的输入的话,提交表单内容,会增加一个新频道。

我们再来看看action,在 /admin/cms_channel_add.php第4行 之后,如果保存提交,先对POST传来的内容进行 null_back() ,跟进这个函数了解到是判空后返回页面,而后面,并没有对数据进行过滤处理,造成我们在前端写入的被带入到 $_data数组

image-20191222171118134
image-20191222171545866

后面用了一个 arrtoinsert($arr) 函数,将数组转成插入用的字符串。

image-20191222171836428
image-20191222172513119

还是没有过滤操作也就是说我们可以构造 ../../ 输入让他增加其他的 频道模型 或者 内容模型

image-20191222172628126

然后再分析 channel.php

这个脚本文件可以在前台直接访问,没有访问限制,在代码 97行之后ism() 函数判断是否是手机端,然后直接include一个拼接的文件名。漏洞点就在这里。

image-20191222172348290

因为是PC端,所以进到else分支。跟进 $dir$t_path$n_model 这三个变量。

dir表示脚本根路径。

image-20191222173036445

t_path表示/template/在连接一个路径/。两层目录。

image-20191222173306342

image-20191222173546815

nmodel是取出来的文件名。

image-20191222173944479

可以看到取到的数据也没有做处理原样存储变量中,现在对应上后端的 /admin/cms_channel_add.php ,由t_path我们知道是两层目录,我们只需要在频道模型输入 ../../xxx 就可以回到web根目录去包含任意文件。

这里一个通过上传一个文件类型是图片格式的PHP木马,然后包含路径即可实现getshell。


文章来源: https://forum.90sec.com/t/topic/822/2
如有侵权请联系:admin#unsafe.sh