代码审计视角揭秘:如何从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 路由分析

首先识别应用的所有可用路由接口:

  1. 管理员路由 (/admin/**)
  2. API 路由 (/api/**)
  3. 二维码生成路由 (/qrCode/**)
  4. 文件操作路由 (/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 漏洞触发流程

  1. 发送下载请求
  2. 系统处理路径时存在缺陷
  3. 可绕过路径安全检查

5.3 路径验证机制

原始路径验证逻辑:

// 验证路径是否合法
// 为路径添加额外的 "/"

问题:

  • 验证逻辑在 if 判断条件内部
  • 可绕过验证直接设置绝对路径

5.4 漏洞利用方法

  1. 构造特殊路径绕过验证
  2. 设置绝对路径读取系统文件
  3. 成功读取任意文件内容

6. 漏洞复现步骤

6.1 准备请求

构造下载请求,包含恶意路径参数

6.2 绕过路径验证

使用路径穿越技术:

  • 使用 ../ 进行目录遍历
  • 或直接指定绝对路径

6.3 读取敏感文件

示例:读取 /etc/passwd 文件

7. 漏洞修复建议

7.1 输入验证

  • 严格校验文件路径
  • 禁止绝对路径和路径穿越字符

7.2 权限控制

  • 限制可访问的目录范围
  • 使用白名单机制

7.3 安全配置

  • 更新 Shiro 配置,加强权限控制
  • 对文件操作接口增加额外认证

8. 总结

本漏洞展示了在文件操作接口中常见的路径验证缺陷,通过精心构造的请求可绕过安全检查,读取服务器上的任意文件。开发人员应重视所有用户输入的验证,特别是涉及文件系统操作的功能。

BootPlus 任意文件读取漏洞挖掘与分析 1. 漏洞概述 本文档详细分析了 BootPlus 框架中存在的任意文件读取漏洞,从环境搭建到漏洞挖掘过程,再到漏洞利用方法,提供了完整的教学流程。 2. 环境搭建 2.1 获取源码 2.2 数据库导入 导入项目提供的 SQL 数据文件 2.3 配置文件修改 修改项目配置文件以适应本地环境 2.4 依赖加载与运行 加载项目依赖后启动应用 3. 代码审计基础 3.1 路由分析 首先识别应用的所有可用路由接口: 管理员路由 ( /admin/** ) API 路由 ( /api/** ) 二维码生成路由 ( /qrCode/** ) 文件操作路由 ( /sysFile/** ) 3.2 权限控制分析 在 ShiroConfiguration 文件中发现 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. 总结 本漏洞展示了在文件操作接口中常见的路径验证缺陷,通过精心构造的请求可绕过安全检查,读取服务器上的任意文件。开发人员应重视所有用户输入的验证,特别是涉及文件系统操作的功能。