一次垂直越权漏洞挖掘记录:从普通学生到全校管理员
一次垂直越权漏洞挖掘记录:从普通学生到全校管理员
声明:本文漏洞挖掘过程已获授权,所有数据均已脱敏,仅作技术交流。
漏洞概述
在一次授权测试中,我发现某高校研究生院系统存在垂直越权漏洞。攻击者仅凭一个普通学生账号,即可访问后台缓存管理功能,定向清除全校所有在线用户的会话,导致全部用户被强制登出。
漏洞类型:未授权访问 → 垂直越权
影响范围:全校师生账户(含管理员)
所需权限:仅需一个普通学生账号
漏洞复现
Step 1:获取低权限用户
使用普通学生账号登录系统,验证当前用户身份为“学生”角色,不具备任何管理员权限(无后台管理菜单)。

Step 2:直接访问管理员接口
在未授权的情况下,直接访问后台缓存管理页面(路径特征为 /monitor/cache):
页面可正常打开,且展示缓存名称、数量等敏感统计信息
这表明后端接口未对当前用户角色做权限校验

Step 3:执行攻击操作
虽被掩码但数量级信息已泄露,证明该缓存有效且存有大量用户会话。

调用缓存清空接口(路径特征为 /monitor/cache/clearAll),系统返回操作成功。

Step 4:验证攻击结果
刷新当前页面,系统自动跳转到登录页,返回包中出现 rememberMe=deleteMe 特征,表明Shiro会话已被强制销毁,全校所有在线用户均被登出。
根因分析
该漏洞根源在于系统使用的某Java后台管理框架(Shiro)在路径权限配置时未覆盖 /monitor/cache/** 路径,导致该路径下所有接口默认允许任意已登录用户访问。
预期应为:该路径仅允许拥有 monitor:cache:view 或 monitor:cache:remove 权限的管理员角色访问。
修复建议
紧急修复:在Shiro配置中为
/monitor/cache/**路径增加角色或权限校验双重校验:在所有管理功能的后端接口方法上增加权限注解(如
@RequiresPermissions)路由隔离:将管理API与普通用户API进行物理或逻辑隔离
总结
这是一个典型的“权限配置疏漏”导致的越权漏洞,危害等级高但修复成本极低——只需在配置中加几行权限规则即可。在实战渗透中,对开源框架的权限配置做全路径覆盖检查,往往能发现类似的高危漏洞。