欢迎光临
我们一直在努力

代码审计的艺术系列-第十一篇

作者:HackBraid

0x01 设计缺陷&&逻辑漏洞挖掘的脑图:

0x02 无任何验证 :

程序安装完成后不会自动删除安装文件,也不会生成lock来判断是否安装过导致的重装漏洞,之前出现过的漏洞代码如下:
install/index.php

install的引导文件里没有判断lock导致可以直接重装

0x03 代码的逻辑问题 :

1.Step1判断lock文件可直接Step2绕过
install/index.php的缺陷代码和分析如下:

  1. 判断lock文件的代码有问题
    还有一种是在判断lock文件是否存在的代码上有问题了,我们看下缺陷代码:

可以看到这里判断了Lock是否存在,但是if(file_exists($lockfile) && ($_a==’template’ || $_a==’setting’ || $_a==’check’)这里除了判断lock还判断了$_a,并且使用&&导致$_a为空时就绕过了lock的验证最终导致可继续重装。
0x04 变量覆盖 :
在install/index.php中

file_exists($insLockfile)这里判断lock文件是否存在并退出,但是这行代码foreach($$_request as $_k => $_v) ${$_k} = _runmagicquotes($_v);存在变量覆盖,所以可以直接将$insLockfile变量覆盖为1就使得file_exists($insLockfile)的返回为0,从而可以继续重装。

0x05 判断lock后无exit :

缺陷代码如下:

检查是否存在install.lock,然后用javascript的方式告诉用户“系统已安装过”,然后跳转。问题在于这个脚本根本还没有使用exit函数来结束,程序会继续运行,导致可继续重装。

未经允许不得转载:Caldow » 代码审计的艺术系列-第十一篇
分享到: 生成海报

切换注册

登录

忘记密码 ?

切换登录

注册

我们将发送一封验证邮件至你的邮箱, 请正确填写以完成账号注册和激活