您的位置 首页 php

论PHP常见的漏洞第一弹:常见安装问题

首先拿到一份源码,肯定是先install上,而在安装文件上又会经常出现问题。

一般的安装文件在安装完成后,基本上都不会自动删除这个安装的文件,我遇到过的会自动删除的好像也就qibocms了。

其他的基本都是通过生成一个lock文件来判断程序是否安装过了,如果存在这个lock文件了就会退出了。 这里首先先来说一下安装文件经常出现的问题。

根本无验证

这种的虽然不多,但是有时还是会遇到个。在安装完成, 并不会自动删除文件,又不会生成lock来判断是否安装过了。导致了可以直接重装过

安装file

因为install一般都会有step 步骤啥的。。Step 1 check 啥啥 step 2 是安装啥的。 而一些cms 默认step是1,而step又是GET 来的 而他check lock的时候就是在step 1里面。 这时候如果我们直接用GET提交step 2,那么就直接进入下一步了,就没check lock了。

例如某cms中的安装文件


变量覆盖导致重装

这里是一个经常遇到的一个变量覆盖。

导致了我们可以覆盖掉$insLockfile从而让file_exists为false就不会退出了。导致再次重装。 这个变量覆盖不知道咋的 能在一些小cms的安装文件里看到。

之前看的xdcms 和 frcms 都存在这个变量覆盖。

例子: WooYun: frcms 重装系统 [


解析漏洞

这个也比较少, 就随便说句。就是像dedecms很久以前的那样在安装完成后会在install.php rename 为 Install.php.bak 但是由于apache的解析漏洞,如果无法识别最后的一个后缀的话,就会向上解析,那么就又成php了。然后又结合dedecms安装时的变量覆盖,又成重装了。


满足一些条件不会退出的

这种例子也不算太多, 自己好像也没遇到过太多。

首先以之前发过的sitestar举例下

这里我们来理解一下这个逻辑, 这里的file_exists($lockfile) 因为安装成功后 lockfile 肯定存在的,所以这里肯定会是true。然后再看一下,这里是一个 && true true 才会进入语句块。 那么如果$_a 不为 template 、 setting 、 check 的话,那么后面的就为false True and false => false就不会进入这个语句块,就不会exit,再配合后面的

刚好有个其他的 如果$_a 为 create 那么就不会退出这个脚本

刚好这个create 能达到Getshell的效果

例子: WooYun: 建站之星Sitestar前台Getshell一枚 [

剩下的还有hdwiki之前也有一个基本差不多这样的例子

如果step为8的话 那么就不会执行exit了。

刚好这里step 8又能执行一些特殊的操作。。 现在就把case 8 注释掉了。

这里代码我就不复制过了 免得占篇幅。

这里差不多是我比较常遇到的一些安装文件经常遇到的问题了,突然想也想不到其他啥的了。

文章来源:智云一二三科技

文章标题:论PHP常见的漏洞第一弹:常见安装问题

文章地址:https://www.zhihuclub.com/151283.shtml

关于作者: 智云科技

热门文章

网站地图