华科CMSV1.1文件包含漏洞代码分析【通过】

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

版本:华科CMSV1.1

漏洞危害:高危

代码分析:

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

我们先分析 /admin/cms_channel_add.php

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

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

主要关注 nmodeldmodel 这两个。

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

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

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

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

然后再分析 channel.php

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

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

dir表示脚本根路径。

image-20191222173036445

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

image-20191222173306342


nmodel是取出来的文件名。

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

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

  • 通过
  • 未通过

0 投票者

华科CMSV1.1文件包含漏洞.pdf (876.7 KB)