文章来源于网络收集而来,版权归原创者所有,如有侵权请及时联系!
BugFree 重装漏洞案例
针对功能点的审计是相对简单的,不过在使用这种方式审计之前建议先了解整个程序的架构设计和运行流程,程序重装漏洞在早期是比较常见的,我们来看看 BugFree 的程序安装功能,该程序之前被 papaver 爆出存在多个漏洞,其中就有一个重装漏洞。
BugFree 安装文件在 install\index.php,代码如下:
<?php require_once ( 'func.inc.php' ); set_time_limit ( 0 ); error_reporting ( E_ERROR ); // 基本路径 define ( 'BASEPATH' , realpath ( dirname ( dirname ( __FILE__ )))); // upload path define ( 'UPLOADPATH' , realpath ( dirname ( dirname ( dirname ( __FILE__ )))) .DIRECTORY_SEPARATOR.'BugFile' ); // 配置样本文件路径 define ( 'CONFIG_SAMPLE_FILE' , BASEPATH . '/protected/config/main.sample.php' ); // 配置文件路径 define ( 'CONFIG_FILE' , BASEPATH . '/protected/config/main.php' );
看这段代码首先包含了'func.inc.php'文件,跟进这个文件可以看到一些读取配置文件、检查目录权限以及服务器变量等功能的函数,下方则是定义配置文件的路径,继续往下走,真正进行程序逻辑流程的地方如下代码所示:
$action = isset ( $_REQUEST['action'] ) ? $_REQUEST['action'] : CHECK ; if ( is_file ( "install.lock" ) && $action ! = UPGRADED && $action ! = INSTALLED ) { header ( "location : ../index.php" ); }
这段代码存在一个逻辑漏洞,首先判断 install.lock 文件是否存在以及 action 参数值是否升级完成和安装完成,如果是,则跳转到程序首页,这里仅仅使用了
header ( "location : ../index.php" );
并没有使用 die() 或者 exit() 等函数退出程序流程,这个跳转只是 HTTP 头的跳转,下方代码依然会继续执行,这时候如果使用浏览器请求 install/index.php 文件则会跳转到首页,我们用 burp 试试,效果如图 3-13 所示。
图 3-13
可以看到程序又可以再次安装。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论