学生管理系统审计

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

相关推荐
野生的码农33 分钟前
码农的妇产科实习记录
android·java·人工智能
毕设源码-赖学姐2 小时前
【开题答辩全过程】以 高校人才培养方案管理系统的设计与实现为例,包含答辩的问题和答案
java
一起努力啊~2 小时前
算法刷题-二分查找
java·数据结构·算法
小途软件2 小时前
高校宿舍访客预约管理平台开发
java·人工智能·pytorch·python·深度学习·语言模型
J_liaty2 小时前
Java版本演进:从JDK 8到JDK 21的特性革命与对比分析
java·开发语言·jdk
+VX:Fegn08952 小时前
计算机毕业设计|基于springboot + vue律师咨询系统(源码+数据库+文档)
java·数据库·vue.js·spring boot·后端·课程设计
daidaidaiyu2 小时前
一文学习和实践 当下互联网安全的基石 - TLS 和 SSL
java·netty
hssfscv3 小时前
Javaweb学习笔记——后端实战2_部门管理
java·笔记·学习
NE_STOP3 小时前
认识shiro
java
kong79069283 小时前
Java基础-Lambda表达式、Java链式编程
java·开发语言·lambda表达式