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

学生管理系统审计

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.教师编辑

相关文章:

  • 【Java ee初阶】多线程(4)
  • 第十一节:性能优化高频题-响应式数据深度监听问题
  • 大模型(LLMs)强化学习—— PPO
  • Android wifi开发调试总结
  • NIPS2021 | 视觉 Transformer 的有趣特性
  • 华纳云:centos如何实现JSP页面的动态加载
  • Oracle的PLSQL中动态执行函数
  • Ubuntu中C++项目安装二次规划库——qpOASES 库
  • 基于STM32、HAL库的DS2411R安全验证及加密芯片驱动程序设计
  • HarmonyOS NEXT 诗词元服务项目开发上架全流程实战(一、项目介绍及实现效果展示)
  • 蓝桥杯Python组高频考点与解题策略
  • Axios 传参与 Spring Boot 接收参数完全指南
  • Visual Studio 技能:调整软件界面布局
  • SoapUi测试1——REST(WebAPi、Json协议/HTTP、Post通讯方式)接口测试
  • C语言基础—(函数,指针与形参实参,字符串与指针,结构体)
  • 在另外一台可以科学下载的电脑用ollama下载模型后,怎么导入到另外一台服务器的ollama使用
  • (一)Linux的历史与环境搭建
  • 云原生--核心组件-容器篇-6-Docker核心之-镜像仓库(公共仓库,私有仓库,第三方仓库)
  • 香橙派打包qt文件报错“xcb 插件无法加载”与“QObject::moveToThread”线程错误的解决方案
  • 2.2.1goweb内置的 HTTP 处理程序
  • 北京动物园:大熊猫“萌兰”没有参加日本大阪世博会的计划
  • 古籍新书·2025年春季|中国土司制度史料集成
  • 见证上海援藏30年成果,萨迦非遗珍品展来沪
  • 新剧|反谍大剧《绝密较量》央一开播,张鲁一高圆圆主演
  • 事关稳就业稳经济,10张海报看懂这场发布会的政策信号
  • 影子调查丨危房之下,百余住户搬离梦嘉商贸楼