代码审计视角揭秘:如何从0挖掘 BootPlus读取服务器任意文件漏洞
字数 1178 2025-08-29 08:30:19
BootPlus 任意文件读取漏洞挖掘与分析
1. 漏洞概述
本文档详细分析了 BootPlus 框架中存在的任意文件读取漏洞,从环境搭建到漏洞挖掘过程,再到漏洞利用方法,提供了完整的教学流程。
2. 环境搭建
2.1 获取源码
git clone https://github.com/JoeyBling/bootplus
2.2 数据库导入
- 导入项目提供的 SQL 数据文件
2.3 配置文件修改
- 修改项目配置文件以适应本地环境
2.4 依赖加载与运行
- 加载项目依赖后启动应用
3. 代码审计基础
3.1 路由分析
首先识别应用的所有可用路由接口:
- 管理员路由 (
/admin/**) - API 路由 (
/api/**) - 二维码生成路由 (
/qrCode/**) - 文件操作路由 (
/sysFile/**)
3.2 权限控制分析
在 ShiroConfiguration 文件中发现 Shiro 过滤器配置:
// Shiro 过滤器配置
// 需要授权的路由
// 匿名访问的路由
- 管理员路由需要认证,无凭证无法利用
- 重点审计无需认证的路由
4. 路由详细审计
4.1 API 路由审计
- 接口需要参数:
accessToken: 用户凭证,用于身份认证appid: 应用 ID- 其他系统级参数 (
random,oper等)
- 利用空间有限,主要用于身份验证
4.2 二维码路由审计
/qrCode/**路由仅用于生成二维码- 无实际利用价值
4.3 文件操作路由审计
SysFileController 提供文件上传下载功能:
文件上传功能
- 可上传任意文件
- 属于任意文件上传漏洞
- 但利用价值有限
文件下载功能 - 漏洞点
download 路由存在任意文件读取漏洞
5. 漏洞详细分析
5.1 漏洞位置
SysFileController 中的文件下载功能
5.2 漏洞触发流程
- 发送下载请求
- 系统处理路径时存在缺陷
- 可绕过路径安全检查
5.3 路径验证机制
原始路径验证逻辑:
// 验证路径是否合法
// 为路径添加额外的 "/"
问题:
- 验证逻辑在 if 判断条件内部
- 可绕过验证直接设置绝对路径
5.4 漏洞利用方法
- 构造特殊路径绕过验证
- 设置绝对路径读取系统文件
- 成功读取任意文件内容
6. 漏洞复现步骤
6.1 准备请求
构造下载请求,包含恶意路径参数
6.2 绕过路径验证
使用路径穿越技术:
- 使用
../进行目录遍历 - 或直接指定绝对路径
6.3 读取敏感文件
示例:读取 /etc/passwd 文件
7. 漏洞修复建议
7.1 输入验证
- 严格校验文件路径
- 禁止绝对路径和路径穿越字符
7.2 权限控制
- 限制可访问的目录范围
- 使用白名单机制
7.3 安全配置
- 更新 Shiro 配置,加强权限控制
- 对文件操作接口增加额外认证
8. 总结
本漏洞展示了在文件操作接口中常见的路径验证缺陷,通过精心构造的请求可绕过安全检查,读取服务器上的任意文件。开发人员应重视所有用户输入的验证,特别是涉及文件系统操作的功能。