PHP安装文件的审计

 初始化安装

一般php程序都有一个初始安装的问题,如果使用了一些cms安装后且没有删除安装文件的话,就会导致二次安装等问题. 具体但不限于以下几种情况:

  1. 无验证功能,任意重装覆盖
  2. $_GET['step']跳过限制步骤
  3. 变量覆盖导致从新安装
  4. 判断lock后跳转无exit
  5. 解析install.php.bak漏洞
  6. 其他特定功能绕过漏洞

源码解析

首先判断一下.lock文件是否存在,如果存在,则跳转到主页, 注意他这的跳转并没有使用代码的手段终止代码运行(exit,die)

接下来是环境的一些展示

接下来是数据库的配置和连接

漏洞实现

通过访问install.php文件. 发现跳转到了index.php文件(我已安装过).

利用burp抓包来看,响应到了index.php

通过burp的历史 找到请求的install.php  查看响应,发现由于代码没有终止操作,所以后续的所有代码都是响应了.

我把他的跳转代码给注释,然后重新抓包, 得到post数据包,发送到burp重放栏

修改参数dbname == expa; -- - "; phpinfo();

然后打开注释的代码. 发送出去我们修改后的包.

然后我们访问config.php 发现已经显示了phpinfo()页面信息;

修复

问题的根源就在于已经安装过的时候 ,并没有结束代码的执行. 所以我们在判断安装跳转之后需要加上代码终止运行.

另外最好就是安装完删除与之对应文件.

原文地址:https://www.cnblogs.com/php09/p/10517118.html