本环境采用phpstudy一键搭建,将下载的压缩包直接解压到phpstudy的www目录下,移动文件时会出现问题,建议php版本为5.6,更多详情请见下载的安装教程.txt。访问/lmxcms1.4/install开始安装

欲知更多搭建教程,请见前期内容https://yezifan.cn/?p=811

任意文件删除

通过cnvd得知漏洞源自

打开源码进行代码审计,属于后台漏洞,观察admin目录下内容,有俩,猜测是第一个和数据库相关的,db嘛

为实验谨慎,我们搜索unlink函数,此函数是php的删除函数,当然也可能此CMS是自行写了一个函数来删除,可以搜索删除作为关键词,这一般都是注释

在里面看到了是变量的只有backdbaction.php,倒数第三行删除的是确定值html,不是任意文件,于是对backdbaction.php检查

这个.zip后缀已经确定,pass

这个变量只是数字,因为看到了前面的第几组数据备份成功

这个经过测试,发现追溯到前面的get参数获得的filename,输入filename后解压会报错,不会进入删除环节,且如果是zip文件会解压不会删

那么就有可能是调用的其他文件,其他文件里面有该函数(unlink),或者自行写了一个删除函数,于是我们查找类似删除的关键词del什么的,在末尾找到了这个函数

看看哪儿调用了这个函数,发现就在上面,而且是以get请求得到filename

于是调用这个方法,在file/back/路径下新建一个1.txt,看看能不能删除

是可以的

因为没有验证代码,于是可以通过../进入上级目录实现所有文件删除,这里在/file的同级目录下创建文件1.txt,尝试删除

没问题的

任意文件读取修改

并没有提到漏洞源自那个文件,但是这里是低位肯定是出自后台,前台就不止低位

搜索php中的读取文件函数有哪些

搜到了一个

该函数主要目的是获取文件内容,先判断文件路径是否存在,然后再尝试能不能获取文件内容,如果行,就返回文件内容,一点绕过都没有

于是寻找那里调用了该方法,对其获取的参数值构造就可以了

该editfile方法通过get传递了一个dir变量,前半部分是对获取的post值判断,这里不看,暂时用不到,然后pathinfo获取文件路径,然后对文件内容进行html修饰后展示。这里不清楚指针的路径是哪个位置,于是输出

找到对应路径后,在根目录下创建一个txt文件,并读取他内容

也是读取到了

接着读取敏感文件,在inc目录下,也是可以的

接着发现这个读取文件是可以修改文件内容的,点击提交后php文件就被修改了

那就是对应刚刚的前一段代码,获取一个post参数settemcontent确定是不是要修改文件,但不能是它默认的那个模板文件被修改。接着传递要修改的文件名filename,后面还有一个参数没有截取到:temcontent(代表要修改的内容是什么)。于是乎这里的dir就和刚刚的表达意思不一样了,这里是指文件夹的名字,刚刚是文件名。为了确定所在路径我还是输出了一下当前的路径

通过测试知道了当前的路径是/lxmxcms1.4/template,以下内容表示在template/admin目录下修改一个叫1.txt的文件,内容是ajdjas,执行过后就出现该文件(如果没有创建此文件他会自动创建修改)

手贱一下把配置文件改了