返回介绍

BugFree 重装漏洞案例

发布于 2024-10-11 22:07:42 字数 1455 浏览 0 评论 0 收藏 0

针对功能点的审计是相对简单的,不过在使用这种方式审计之前建议先了解整个程序的架构设计和运行流程,程序重装漏洞在早期是比较常见的,我们来看看 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文