当前位置: 首页 > web >正文

学生管理系统审计

1.环境搭建

项目地址: https://gitee.com/huang-yk/student-manage

项目下载到本地后IDEA打开,等待项目加载

配置Maven,修改数据库配置文件

然后启动

访问

2.代码审计

1.垂直越权+未授权+敏感信息泄露

找到拦截器看看对登录做了什么校验

@Override
public boolean preHandle(HttpServletRequest request,HttpServletResponse response, Object handler) throws Exception {HttpSession session = request.getSession();User user = (User) session.getAttribute(StrUtil.USER);if (user == null) {response.sendRedirect(request.getContextPath() + "/login/loginPage");return false;} else {String url = request.getRequestURI();List<Auth> list = user.getUrlList();for (Auth auth : list) {if (url.contains(auth.getUrl()) || auth.getUrl().contains(url.split("/")[0])) {return true;}}}response.sendRedirect(request.getContextPath() + "/404");return false;
}

第一 ,可以看到检查用户是否已登录,然后检查登录用户是否有权限访问当前请求的URL,若登录就进去,没登录就跳转登录界面

第二 ,

  • 遍历权限列表,检查当前 URL 是否匹配任何权限规则
  • 匹配规则1:当前 URL 包含权限 URL(url.contains(auth.getUrl()))
  • 匹配规则2:权限 URL 包含当前 URL 的第一级路径(auth.getUrl().contains(url.split("/")[0]))

所以这里就有一些潜在问题

RL 匹配逻辑可能不够精确

  • 使用 contains() 方法可能导致误匹配(例如 /user 会匹配 /user/add/admin/user
  • 考虑使用更精确的匹配方式,如 equals 或正则表达式

url.split("/")[0] 获取的是第一个路径段,这种匹配可能过于宽松

查看数据库

可以发现各自的身份权限所能访问的位置,其中管理员19个都能访问,而学生和老师分别为7个8个

根据上面的代码分析,我们进入管理员之后拥有权限,可以进行构造路径来进行垂直越权进行操作

可以发现进入管理员访问这个/student/list 可以发现能够遍历所有的人员信息

登录普通用户

拼接这个/student/list 依然可以访问,达到垂直越权加未授权加敏感信息泄露

2.多处XSS

查找是否有预编译的,或者xss相关的

发现没有对xss进行预编译的或者防护,而且添加的数据在进入数据库之前都没有进行判断或者进行校验,然后直接就是找个xss poc 直接插入就行了

1.公告编辑

2.学生编辑

3.教师编辑

http://www.xdnf.cn/news/2686.html

相关文章:

  • 从零开始的二三维CAD软件开发: 系列经验分享-写在开头
  • TensorFlow深度学习实战——基于循环神经网络的文本生成模型
  • ExoPlayer 中的 Timeline、Period 和 Window
  • shell--数组、正则表达式RE
  • Flutter 学习之旅 之 flutter 作为 module ,在 Android 端主动唤起 Flutter 开发的界面 简单的整理
  • gitgitgit!
  • 关于CentOS7学习过程中遇到的一些问题
  • JAVA-StringBuilder使用方法
  • 文号验证-同时对两个输入框验证
  • Android开发,实现一个简约又好看的登录页
  • 谷歌浏览器js获取html宽度不准
  • 聊聊spring-boot-data-redis使用过程中的困惑(序列化,反序列化,Jackson, JavaType, TypeReference)
  • 第1篇:Egg.js框架入门与项目初始化
  • [leetcode]2302.统计得分小于k的子数组
  • HTML5 WebSocket:实现高效实时通讯
  • Win11安装Ubuntu20.04简记
  • 软件工程(二):开发模型
  • 传统农耕展陈如何突破?数字多媒体能否重构文化体验边界?
  • 为什么MySQL推荐使用自增主键?
  • 鼠标滚动字体缩放
  • deepseek对IBM MQ SSL 证书算法的建议与解答
  • vue跨域问题总结笔记
  • 论文阅读_Citrus_在医学语言模型中利用专家认知路径以支持高级医疗决策
  • 2025 SAP专精特新企业高峰论坛 | 工博科技以SAP公有云+AI赋能新质生产力​
  • Linux系统管理与编程14:Shell变量及定制bash登录界面
  • 目标检测YOLO实战应用案例100讲- 无人机平台下露天目标检测与计数
  • 铭记之日(3)——4.28
  • 【知识科普】今天聊聊CDN
  • Go 1.24 is released(翻译)
  • 30天通过软考高项-第六天