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");
returnfalse;
} else {
String url = request.getRequestURI();
List
list = user.getUrlList(); for (Auth auth : list) {
if ( url.contains(auth.getUrl()) || auth.getUrl().contains(url.split( "/")[0])) {
returntrue;
}
}
}
response.sendRedirect(request.getContextPath() + "/404");
returnfalse;
}
第一 ,可以看到检查用户是否已登录,然后检查登录用户是否有权限访问当前请求的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个
根据上面的代码分析,我们进入管理员之后拥有权限,可以进行构造路径来进行垂直越权进行操作
2.多处XSS
1.公告编辑
2.学生编辑
3.教师编辑
注:鼎星安全有对此文章的修改和解释权。如欲转载或传播此文章,必须保证此文章的完整性,包括版权声明等全部内容。未经允许,不得任意修改或者增减此文章内容,不得以任何方式将其用于商业目的。
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论