基于Spring boot的医药管理系统审计
字数 1340 2025-08-30 06:50:36
基于Spring Boot的医药管理系统安全审计报告
环境搭建
环境准备
- 使用IDEA打开项目
- 修改JDK和Maven配置
- 等待Maven依赖加载完成
配置文件修改
- 修改路径:
src/main/resources/application.yml - 需要配置数据库连接信息
数据库设置
- 创建对应数据库
- 导入提供的SQL文件
- 启动项目
代码审计发现的安全漏洞
1. 鉴权逻辑缺陷
拦截器分析
- 项目存在拦截器配置
- 拦截器处理两部分逻辑:
- 用户校验逻辑(通过token验证)
- 允许未授权访问的逻辑
Token生成机制
- Token生成逻辑中包含随机数,难以伪造
未授权访问接口
/dictionary/page/file/upload- 带有
@IgnoreAuth注解的所有路由
2. 未授权任意密码重置
漏洞发现
- 全局搜索
@IgnoreAuth注解发现多个未授权接口 - 其中存在通过用户名重置密码的功能
漏洞验证
- 构造请求通过用户名重置密码
- 查看数据库确认密码已被修改
3. 未授权SQL注入
技术栈分析
- 系统使用MyBatis作为ORM框架
漏洞定位
- 全局搜索
${(MyBatis中可能导致SQL注入的写法) - 发现多处潜在注入点
- 重点关注
column参数
漏洞链分析
column参数 → Dao层 → Controller层- 接口带有
@IgnoreAuth注解,无需认证
漏洞利用
- 构造正常请求
- 使用SQLMap进行自动化注入测试
4. 水平越权
漏洞发现
- 以普通用户身份登录
- 测试后台功能点
- 发现用户信息修改功能
漏洞分析
- 通过传入的用户ID进行数据修改
- 代码中缺少对用户ID与当前用户ID的校验
漏洞验证
- 修改请求中的用户ID为其他用户
- 确认可以成功修改其他用户信息
5. 任意文件上传
漏洞定位
- 全局搜索关键词
upload - 发现文件上传逻辑缺陷
漏洞分析
- 获取上传文件后缀后未进行安全检测
- 直接拼接路径并使用
file.transferTo(dest)上传文件
漏洞验证
- 构造恶意文件上传请求
- 确认文件上传成功
6. 未授权任意文件下载
漏洞定位
- 全局搜索关键词
download - 发现文件下载接口存在缺陷
漏洞分析
- 未对传入的文件名进行安全检测
- 存在目录遍历漏洞
- 接口未授权即可访问
漏洞验证
- 构造包含路径遍历字符的请求
- 成功读取系统敏感文件
修复建议
-
鉴权逻辑加固
- 严格限制
@IgnoreAuth注解的使用 - 对敏感操作增加二次验证
- 严格限制
-
SQL注入防护
- 将
${}替换为#{}参数化查询 - 对动态列名进行白名单校验
- 将
-
越权防护
- 所有涉及用户数据的操作需验证当前用户权限
- 服务端校验操作用户与目标用户的关联性
-
文件上传防护
- 限制上传文件类型(白名单机制)
- 对上传文件进行病毒扫描
- 存储上传文件到非Web目录
-
文件下载防护
- 对文件名进行规范化处理
- 限制可访问的目录范围
- 增加身份验证和权限检查
-
日志与监控
- 记录所有敏感操作日志
- 设置异常操作告警机制
总结
本医药管理系统存在多处严重安全漏洞,包括未授权访问、SQL注入、水平越权、任意文件上传/下载等高风险问题。建议立即修复上述漏洞,并在开发过程中引入安全编码规范和安全测试流程,以提升系统整体安全性。