freeBuf
主站

分类

云安全 AI安全 开发安全 终端安全 数据安全 Web安全 基础安全 企业安全 关基安全 移动安全 系统安全 其他安全

特色

热点 工具 漏洞 人物志 活动 安全招聘 攻防演练 政策法规

点我创作

试试在FreeBuf发布您的第一篇文章 让安全圈留下您的足迹
我知道了

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

代码审计 | 某edu CMS漏洞分析
2025-03-08 09:56:23
所属地 山西省

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

一、说明

  • 1.前端采用了layui这个框架,使用了freemarker模板引擎;
    后台采用Java编写,使用了spring+springMVC+mybatis;
    数据库采用的是mysql。
  • 2.项目中的角色功能:管理员(编辑公告、批量导入学生/教师/课程基本信息、及增删改查、对系统接口访问权限的控制);
    教师(录入学生成绩、查看自己的课程/学生、结束课程)演示地址中教师密码与其账号一样;
    学生(选课、查成绩)演示地址中学生密码与其账号一样;

二、项目搭建

下载源码,使用idea导入

创建相应的数据库,更改配置信息

项目访问地址如下: 后台地址: http://127.0.0.1:8888


三、组件漏洞代码审计

我们对系统的组件先进行统计看看有没有历史漏洞

组件名称

组件版本

是否存在漏洞

druid

1.1.22

不存在

mybatis

1.3.2

不存在

fastjson

1.2.62

不存在

经过发现这些组件的版本都不存在漏洞

四、单点漏洞代码审计

1.越权漏洞

我们先看下拦截器


首先需要登录成功的,这部分我们没有发现一些利用方式

接下来,发现了一处判断语句存在漏洞

if (url.contains(auth.getUrl()) || auth.getUrl().contains(url.split("/")[0])) {
          return true;
          }
1. url.contains(auth.getUrl())
这个条件可能会导致误判。例如,权限列表里有一个权限 URL 是 /user,而实际请求的 URL 是 
/userinfo,按照 contains 方法的逻辑,就会判定匹配成功,但实际上 /userinfo 可能是一个不同
的接口,这样就可能造成权限绕过,让用户访问到超出其权限范围的资源。
2. auth.getUrl().contains(url.split("/")[0])
数组越界风险:url.split("/")[0] 存在数组越界的潜在风险。如果请求的 URL 包含 /,那么使
用 [0] 就为空,它的值就会一直为真,所以split 方法应该返回的数组长度为 1。


那么我们就可以进行绕过了。

我们进行测试一下,这是权限的一些限制表


我们先登录到一个学生用户

然后去访问学生没权限访问的路径

发现可以进行,证明确实存在越权漏洞


2.xss漏洞

我们黑盒发现存在xss漏洞


发现存在xss漏洞的只有title和author这两个参数


我们定位到该路由/notice/addPage

我们发现这里面并没有对传进来的参数进行过滤排查直接就调用了

body.find("#author").val(edit.author);
 在弹窗内页面的 body 元素中查找 id 为 author 的元素,并将其值设置为 edit.author。
 edit.author 是公告的作者信息。

所以确定这里存在xss漏洞

3.xss漏洞

我们发现添加学生信息的时候也存在xss漏洞


找到该路由/student/add和参数major和grade


我们发现这部分也没有进行参数查验,所以这处也存在xss漏洞

4.xss漏洞

教师端也存在同学生端一样的xss漏洞,这里我们就不做多复现了

# 漏洞 # 渗透测试 # 漏洞分析
免责声明
1.一般免责声明:本文所提供的技术信息仅供参考,不构成任何专业建议。读者应根据自身情况谨慎使用且应遵守《中华人民共和国网络安全法》,作者及发布平台不对因使用本文信息而导致的任何直接或间接责任或损失负责。
2. 适用性声明:文中技术内容可能不适用于所有情况或系统,在实际应用前请充分测试和评估。若因使用不当造成的任何问题,相关方不承担责任。
3. 更新声明:技术发展迅速,文章内容可能存在滞后性。读者需自行判断信息的时效性,因依据过时内容产生的后果,作者及发布平台不承担责任。
本文为 独立观点,未经授权禁止转载。
如需授权、对文章有疑问或需删除稿件,请联系 FreeBuf 客服小蜜蜂(微信:freebee1024)
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
相关推荐
  • 0 文章数
  • 0 关注者
文章目录