【漏洞研究】[代码审计]代码审计的艺术系列–—第十一篇

声明:文章授权转载,转自安兔|anntoo.com 互联网安全新媒体平台


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


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




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









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







2. 判断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函数来结束,程序会继续运行,导致可继续重装。


技术交流QQ群: 397745473
来自:https://xianzhi.aliyun.com/forum/read/74.html?fpage=16

评论

此博客中的热门博文

【黑产分析】互联网业务安全的黑灰产业链的故事

【黑产分析】Aveo恶意软件分析

【黑产分析】《中国互联网地下产业链分析白皮书》