越权漏洞分为平行越权和垂直越权
作者:娱乐 来源:休闲 浏览: 【大 中 小】 发布时间:2026-10-17 06:13:12 评论数:
某电商平台搞促销,越权越权一个普通用户登录后台想改自己的漏洞收货地址,结果发现URL里有个参数叫user_id=1024。平行手贱改成1025,和垂一提交——隔壁老王的越权越权订单、电话、漏洞家庭住址全弹出来了。平行这就是和垂平行越权,平级用户之间互相偷看。越权越权
平行越权的漏洞本质是“不该看同级别的东西”。开发人员常常默认“登录了就是平行本人”,却忘了校验“这个资源到底属不属于当前会话”。和垂最常见的越权越权场景就是通过ID直接查数据:GET /order/12345,把12345改成12346试试?漏洞能查到就是漏洞。有些系统加了token,平行但token绑在会话上没绑在资源上,换台设备登自己的号照样能看别人的数据。说白了,权限校验只做了“是否登录”,没做“是否拥有”。
垂直越权就粗暴多了。普通用户点个按钮,抓包一看请求的是/admin/deleteUser,把请求重放一遍——管理员该干的事你干了。这属于“越级操作”,低权限角色直接调用了高权限接口。有些系统做了前端控制,菜单里不显示管理员入口,可后端接口裸奔,懂点HTTP的人拿Postman直接发请求就能删库。你说气不气人。
我见过最离谱的案例,某内部系统把管理员功能做成独立路径/manage,但普通用户访问时只是被前端路由拦了一下。把浏览器地址栏手动改成/manage/user/list,数据就出来了。后端完全没判断角色,就靠页面藏按钮来“防”越权——这跟把钥匙放在门口垫子下面有什么区别。
两种越权的根子其实一样:信任了不该信任的输入,或者压根没做对象级授权。平行越权考验的是“数据归属校验”,垂直越权考验的是“角色权限校验”。前者容易出现在业务逻辑复杂、资源类型繁多的系统里,比如订单、文件、消息各写一套校验逻辑,漏一处就完蛋。后者常见于后台管理系统,接口设计时没按角色拆分,一个接口服务所有人,靠前端传个isAdmin=true就放行——这种代码我见一次骂一次。
测试越权没什么高深技巧。平行越权就抓个正常请求,遍历ID;垂直越权就注册个小号,拿普通权限的cookie去请求管理员接口。难的是业务场景复杂的系统,比如多租户SaaS平台,租户A的用户能不能操作租户B的数据?这既算平行越权(同级别不同租户)也算垂直越权(跨租户管理)。边界模糊的时候,干脆画个矩阵:角色×资源×操作,每个交叉点都问一句“该不该放行”。
修复倒是直白。后端每次访问资源先查归属,别嫌查询多;每个接口单独校验角色,别搞全局过滤器一刀切。但麻烦的是存量系统,几千个接口一个个查?累死。所以更现实的做法是上网关统一鉴权,外加定期用自动化工具扫一遍IDOR(不安全的直接对象引用)。别指望一次修复永绝后患,业务一迭代,新接口照样可能漏。
说到底,越权漏洞是设计层面的懒惰。图省事少写几行校验,后面补漏洞时流的汗,都是当时脑子进的水。
