PHP安装文件的审计
初始化安装
一般php程序都有一个初始安装的问题,如果使用了一些cms安装后且没有删除安装文件的话,就会导致二次安装等问题. 具体但不限于以下几种情况:
- 无验证功能,任意重装覆盖
- $_GET['step']跳过限制步骤
- 变量覆盖导致从新安装
- 判断lock后跳转无exit
- 解析install.php.bak漏洞
- 其他特定功能绕过漏洞
源码解析
首先判断一下.lock文件是否存在,如果存在,则跳转到主页, 注意他这的跳转并没有使用代码的手段终止代码运行(exit,die)
接下来是环境的一些展示
接下来是数据库的配置和连接
漏洞实现
通过访问install.php文件. 发现跳转到了index.php文件(我已安装过).
利用burp抓包来看,响应到了index.php
通过burp的历史 找到请求的install.php 查看响应,发现由于代码没有终止操作,所以后续的所有代码都是响应了.
我把他的跳转代码给注释,然后重新抓包, 得到post数据包,发送到burp重放栏
修改参数dbname == expa; -- - "; phpinfo();
然后打开注释的代码. 发送出去我们修改后的包.
然后我们访问config.php 发现已经显示了phpinfo()页面信息;
修复
问题的根源就在于已经安装过的时候 ,并没有结束代码的执行. 所以我们在判断安装跳转之后需要加上代码终止运行.
另外最好就是安装完删除与之对应文件.