基于Spring boot的医药管理系统审计
caigo 漏洞分析 394浏览 · 2025-04-06 20:03

环境搭建

环境准备

使用IDEA打开项目,修改JDK和maven配置,等待Maven加载

image.png


修改配置文件:src/main/resources/application.yml

image.png
创建对应数据库,导入SQL文件

image.png


接着启动项目即可

后台登录页面

http://localhost:8080/yiyaoguanlixitong/admin/dist/index.html

image.png


代码审计

鉴权逻辑

优先关注项目是否存在拦截器和过滤器

image.png


发现存在拦截器

image.png


代码分析

这里代码访问两部分,一部分是用户校验逻辑,一部分是允许未授权访问的逻辑,我们一个个看

用户鉴权逻辑

通过token校验用户身份,这里token的生成逻辑中存在随机数,伪造不了

image.png


未授权访问接口

/dictionary/page和/file/upload路由,以及存在@IgnoreAuth注解的路由可以不需要token验证

未授权任意密码重置

通过未授权方法分析,全局搜索@IgnoreAuth注解

image.png


有很多接口存在未授权,这里挑个危害大点的演示

image.png


通过用户名重置密码

image.png


查看数据库

image.png


修改成功

未授权SQL注入

先判断数据库使用技术

image.png


采用mybatis

全局搜索${

image.png


看到有不少,我这里演示一处我测试后可以的
image.png


关注column参数,跳转到Dao层

image.png


接着往上,一步步到controller

image.png


image.png


通过url的columnName传入,这里通过参数名也可以看出是通过数据库表列查数据的,并且可以看到这个接口存在@IgnoreAuth,也就是不需要token验证,这里我测试下得先构造个正常请求然后放到sqlmap

数据包

image.png


水平越权

登录普通用户,测试后台功能点

image.png


看到这个就忍不住测越权,抓包查看

image.png


根据路由定位代码

image.png


image.png
通过传入的用户id进行数据修改,没有看到校验用户id和当前用户id的校验,那么这里存在越权

image.png


测试修改id为2的用户

image.png


成功修改

任意文件上传

全局搜索关键词upload

image.png


这里获取我们上传文件的文件后缀后没有进行检测直接进行拼接,最后通过file.transferTo(dest);上传文件

image.png


成功上传

image.png


未授权任意文件下载

全局搜索关键词download

image.png


这里没有对我们传入的文件名进行检测,存在目录穿越,可以跨目录读文件,并且也是未授权接口

构造请求数据包测试

image.png


0 条评论
某人
表情
可输入 255