在Web安全领域,权限控制失效常年稳居OWASP TOP10核心位置,而越权漏洞正是这一问题的最典型体现。它没有SQL注入、RCE的技术门槛,却是渗透测试中最易挖掘、覆盖面最广、危害最直接的漏洞类型——从普通用户的个人信息泄露,到低权限账号篡改平台配置,甚至批量盗刷平台资产,越权漏洞的利用往往能带来直接的业务损失和数据安全风险。
很多安全从业者觉得越权漏洞“太简单,没技术含量”,但真正能做到全业务模块覆盖、快速定位、精准利用的人,却能在渗透测试中抢占先机。本文结合实战中10个典型的越权案例,覆盖水平越权、垂直越权、复合越权三大类型,涉及用户信息、订单、支付、后台管理等核心业务场景,从挖掘过程、漏洞利用、修复建议三个维度全流程拆解,同时总结越权挖掘的核心技巧和通用修复方案,让你从案例中吃透越权漏洞的本质,成为真正的越权挖掘高手。
前置知识:越权漏洞的核心分类与成因
在开始案例拆解前,先明确越权漏洞的核心分类和根本成因,这是挖掘和利用的基础,所有案例的问题本质都逃不开这两点。
- 核心分类
- 水平越权:同权限等级的用户之间,未经授权访问/操作对方的资源,是最常见的类型,比如普通用户A查看/修改普通用户B的个人信息、订单。
- 垂直越权:低权限等级的用户,未经授权访问/操作高权限等级用户的功能/资源,比如普通用户进入管理员后台、低权限运营查看全平台数据。
- 复合越权:水平越权+垂直越权的结合,危害最大,比如普通用户通过篡改参数,既跨用户操作资源,又实现高权限功能。
- 根本成因
开发人员的侥幸心理和权限校验逻辑缺失是核心,常见问题包括:- 仅在前端做权限校验,后端完全无二次验证;
- 用户ID/资源ID直接作为请求参数,后端未校验该资源是否归当前登录用户所有;
- 权限判断基于不可信的请求头/参数(如
role=1、vip=1),而非服务端的用户角色表; - 会话管理不当,权限变更后(改密码、退出、降权),旧session/token仍可使用;
- 核心接口未做权限校验,仅隐藏前端按钮/路径。
实战案例拆解:10个典型越权漏洞,覆盖全业务场景
所有案例均来自真实渗透测试场景,做了业务脱敏处理,每个案例遵循场景+挖掘过程+漏洞利用+修复建议的结构,兼顾实战性和落地性,部分案例可直接复现测试思路。
案例1:水平越权-用户个人信息查询(最经典入门案例)
业务场景:某电商平台用户中心,通过/api/user/info接口查询个人信息,请求参数携带uid=12345。
挖掘过程:抓包获取查询接口,手动修改uid为其他数值(如12346),无需任何鉴权,直接返回对应uid的用户信息,包括手机号、邮箱、收货地址、身份证号后6位。
漏洞利用:用Burp Suite批量遍历uid参数,可获取海量用户敏感信息,进而开展精准钓鱼、手机号倒卖;若信息包含身份证号,可进一步结合其他漏洞做身份冒用。
修复建议:后端禁止直接通过请求参数的uid做校验,而是从当前登录用户的session/token中提取uid,再查询对应信息,彻底杜绝参数篡改的可能。
案例2:垂直越权-普通用户直接进入管理员后台
业务场景:某SaaS平台的管理员后台路径为/admin/index,前端对普通用户隐藏该入口,仅管理员账号可见。
挖掘过程:普通用户登录后,直接在浏览器地址栏输入/admin/index,无需修改任何参数,成功进入管理员后台;后续抓包发现,后台所有接口均未做角色权限校验。
漏洞利用:操作后台核心功能,包括新增/删除用户、修改平台配置、查看全平台用户数据、导出敏感业务报表,甚至可直接删除平台数据库。
修复建议:对后台所有路径(/admin/*)和接口做全局角色权限校验,基于服务端的用户角色表(如user_role=admin)判断,而非前端隐藏;同时限制管理员后台的访问IP,仅允许公司内网访问。
案例3:水平越权-订单详情查看与状态篡改
业务场景:某生鲜电商平台,订单详情页路径为/order/detail?orderId=67890,用户可查看自己的订单详情、修改收货地址。
挖掘过程:抓包修改orderId为其他数值,成功查看其他用户的订单详情(包含收货人、手机号、收货地址、支付金额);进一步测试发现,修改订单状态接口/order/setStatus?orderId=67890&status=2(2为已发货)也未做归属权校验,普通用户可随意篡改其他用户的订单状态。
漏洞利用:获取海量用户的订单隐私信息;篡改订单状态为“已签收”,导致用户未收到货却显示签收,引发客诉;甚至可篡改收货地址,实现恶意收货。
修复建议:后端建立orderId与uid的关联表,所有订单相关接口先校验orderId所属的uid与当前登录用户的uid一致;订单状态修改、收货地址修改等敏感操作,增加操作日志+二次校验。
案例4:垂直越权-低权限运营查看全平台店铺数据
业务场景:某电商运营后台,普通运营仅能查看自己负责的店铺数据,高级运营可查看全平台所有店铺数据,接口为/api/shop/data?shopId=1001。
挖掘过程:低权限运营抓包修改shopId为0(边界值),成功返回全平台所有店铺的销售数据、用户数据;后续测试发现,修改shopId为9999、-1等特殊值,也能实现全量数据查询。
漏洞利用:获取全平台的核心业务数据,包括店铺销量、客单价、用户画像,进而造成商业机密泄露;甚至可篡改其他店铺的商品信息。
修复建议:后端基于用户岗位配置数据权限白名单,每个运营仅能访问白名单内的shopId;禁止传0、-1、9999等特殊值,对异常shopId直接返回403;核心数据接口增加访问频率限制。
案例5:水平越权-用户私密文件任意下载
业务场景:某云盘平台,用户上传的私密文件(照片、文档、压缩包)下载接口为/api/file/download?fileId=5678,前端仅显示用户自己的文件列表。
挖掘过程:抓包修改fileId为其他数值,无需任何权限,直接下载对应fileId的文件,包括其他用户的私密照片、工作文档、甚至包含公司机密的压缩包。
漏洞利用:批量遍历fileId,获取海量用户的私密文件,进而开展敲诈、信息倒卖;若文件包含企业用户的商业资料,会造成严重的商业损失。
修复建议:后端建立fileId与uid的关联表,同时为每个文件配置权限标识(公有/私有);下载接口先校验当前用户是否拥有该fileId的访问权限,私有文件仅允许所属uid下载。
案例6:垂直越权-普通用户篡改平台系统配置
业务场景:某小程序后台的系统配置修改接口为/api/system/setConfig,前端仅对超级管理员显示配置修改按钮,普通用户无入口。
挖掘过程:普通用户登录后,通过Burp抓包获取管理员的配置修改请求,直接重放该接口,传入自定义参数(如小程序名称、小程序域名、支付回调地址),成功修改平台系统配置。
漏洞利用:篡改小程序域名为钓鱼网站,导致用户访问小程序时跳转到钓鱼页面;修改支付回调地址,将平台的支付资金导向自己的账户;篡改小程序名称,造成平台品牌形象受损。
修复建议:对系统配置修改、参数调整等核心接口做超级管理员专属权限校验,排除所有其他角色;敏感配置修改增加二次验证(短信/验证码)+操作日志;接口增加签名验证,防止请求重放。
案例7:水平越权-用户收藏列表任意查看与删除
业务场景:某社交平台,用户收藏的文章、视频、博主列表接口为/api/collect/list?collectId=9012,支持查看和批量删除收藏内容。
挖掘过程:抓包修改collectId为其他数值,成功查看其他用户的收藏列表,掌握用户的兴趣偏好;进一步测试发现,删除接口/api/collect/delete?collectId=9012也未做归属权校验,可随意删除其他用户的收藏内容。
漏洞利用:根据收藏列表掌握用户隐私偏好,开展精准钓鱼(如用户收藏理财文章,发送理财钓鱼链接);恶意删除其他用户的重要收藏内容,引发用户投诉。
修复建议:后端将collectId与当前登录用户的uid强绑定,所有收藏相关接口先校验归属权;删除收藏内容增加前端二次确认+后端日志记录,便于溯源。
案例8:垂直越权-游客/未登录用户访问会员付费内容
业务场景:某知识付费平台,会员课程的播放接口为/api/course/play?courseId=3456&vip=1,前端对游客/非会员用户隐藏播放按钮,仅显示“开通会员”。
挖掘过程:游客未登录状态下,抓包构造播放请求,将vip参数改为1,成功获取课程播放地址;甚至无需构造参数,直接通过目录扫描获取课程的原始视频地址,无需登录即可播放。
漏洞利用:免费访问平台所有会员付费内容,造成平台直接的收益损失;将播放地址分享到外网,导致平台付费内容大规模泄露。
修复建议:后端对会员内容接口做登录态+会员权限双重校验,从服务端用户表判断是否为会员,而非请求参数vip;课程播放地址做时效+签名验证(如5分钟失效,绑定用户IP),防止地址泄露和复用。
案例9:水平越权-用户操作记录任意查询,泄露管理员轨迹
业务场景:某企业管理后台,用户操作记录查询接口为/api/log/query?logId=7890,支持查看用户的登录、操作、退出等轨迹,管理员的操作记录也存储在该表中。
挖掘过程:普通管理员抓包修改logId为其他数值,成功查看超级管理员的操作记录,包括超级管理员的登录IP、操作时间、修改的核心参数、访问的后台路径。
漏洞利用:掌握超级管理员的操作习惯和登录规律,为后续暴力破解、会话劫持做铺垫;获取超级管理员修改的核心参数,进而发现平台的其他安全漏洞。
修复建议:后端对操作记录做分级权限控制,普通管理员仅能查看自己的操作记录,超级管理员可查看所有用户的操作记录;logId与用户角色做关联校验,禁止普通管理员访问超级管理员的logId。
案例10:复合越权-支付接口篡改金额+跨用户免密支付(危害最大)
业务场景:某充值平台的充值接口为/api/pay/recharge?uid=12345&amount=100,支付成功后平台账户增加对应余额,前端对金额做了正数限制。
挖掘过程:普通用户抓包做两个操作:①将amount改为**-100**(负数),充值后平台余额增加100,实现刷余额;②将uid改为超级管理员的uid,无需输入支付密码,直接完成支付,实现跨用户免密支付。该案例同时涉及水平越权(跨uid)和垂直越权(免密支付),属于复合越权。
漏洞利用:批量刷取平台余额,然后提现到自己的银行卡,造成平台直接的资金损失;盗刷管理员/其他用户的账户资金,引发严重的法律风险。
修复建议:后端对充值金额做严格的正数校验,禁止传入0、负数;支付接口将payId与uid强绑定,校验当前登录用户与请求uid一致,同时增加支付密码/短信验证;所有充值、提现操作增加风控规则(如单次充值上限、单日提现次数),异常操作直接拦截。
越权漏洞挖掘核心技巧:从入门到高手,就靠这8点
越权漏洞的挖掘没有高深的技术门槛,核心在于**「细心+耐心+熟悉业务」**——吃透业务流程,抓住开发人员的校验漏洞,就能快速发现问题。结合上述10个案例,总结8个通用的挖掘技巧,适用于所有Web业务,学会后能让你的挖掘效率提升数倍。
- 抓包是基础,拒绝“前端思维”
所有前端隐藏的按钮、路径、参数,抓包后都能一览无余。永远不要相信前端的展示,前端仅做体验优化,后端的校验才是核心,哪怕前端没有入口,也要抓包测试相关接口。 - 重点关注“资源ID+权限参数”,做好篡改与遍历
对请求中的uid、orderId、fileId、shopId等资源ID,手动篡改或用Burp批量遍历,测试是否能访问其他用户的资源;对role、vip、grade、type等权限参数,修改为高权限值(如1、admin、super),测试是否能实现权限提升。 - 路径探测,挖掘隐藏的后台入口
用目录扫描工具(如Dirsearch、Burp)探测/admin、/manager、/backend、/system等后台路径,即使前端无入口,直接访问路径也可能进入高权限页面。 - 接口重放,测试“前端无入口”的接口
通过抓包、接口文档泄露、目录扫描获取的接口,即使前端无操作按钮,也要用Burp直接重放,测试是否有权限校验,很多核心配置接口的越权都能通过这种方式发现。 - 边界值测试,利用开发的“逻辑疏忽”
对资源ID、权限参数做边界值篡改,比如uid=0/-1、shopId=0/9999、role=-1,很多开发人员未对这些特殊值做校验,会直接返回全量数据或高权限功能。 - 会话保持测试,检查旧session的有效性
当用户改密码、退出登录、被管理员降权/封号后,测试旧的session/token是否还能使用,若能使用,可直接利用旧会话实现越权操作。 - 复合越权测试,叠加水平+垂直越权
不要单独测试水平或垂直越权,而是将两者结合,比如低权限用户篡改资源ID+修改权限参数,这种复合测试能发现更隐蔽、危害更大的越权漏洞,如案例10的支付接口越权。 - 吃透业务流程,从“业务角度”找漏洞
越权漏洞分布在核心业务模块,比如用户中心、订单、支付、后台管理、文件管理,吃透每个模块的业务流程(如充值→支付→到账、下单→付款→发货),针对流程中的每个节点做测试,能快速定位漏洞。
越权漏洞通用修复方案:从根上解决,避免反复出现
越权漏洞的修复看似简单,但很多企业修复后仍会反复出现,核心原因是没有建立统一的权限校验规范,开发人员各自为战,导致校验遗漏。结合实战经验,从开发、测试、运维三个层面给出通用修复方案,能从根上解决越权漏洞问题,适用于所有Web项目。
开发层面:建立统一的权限校验规范,从代码源头规避
开发是修复越权漏洞的核心,必须让开发人员树立**「后端校验为唯一标准」**的思想,同时建立统一的规范,避免重复开发导致的校验遗漏。
- 前端校验仅做体验优化,后端做全量权限校验
明确前端的权限校验仅为了提升用户体验,所有接口、路径、操作都必须在后端做二次校验,拒绝“前端做了,后端就不做”的侥幸心理。 - 基于服务端数据做校验,拒绝不可信的请求参数
权限判断、资源归属权校验,必须基于服务端的用户角色表、资源关联表,而非请求中的role、uid、vip等参数;用户的uid、角色信息从session/token中提取,禁止直接从请求参数中获取。 - 建立资源ID与用户ID的强绑定关系
对所有用户资源(如文件、订单、收藏、操作记录),建立资源ID-用户ID的关联表,所有相关接口先校验资源是否归当前用户所有,无归属权直接返回403。 - 开发统一的权限校验框架,实现全局校验
基于项目的技术栈(如Java/SpringBoot、Python/Django、PHP/Laravel),开发统一的权限校验框架/中间件,对所有接口、路径做全局的权限校验,避免每个开发人员单独写校验代码,造成遗漏。 - 敏感操作增加二次验证+操作日志
对系统配置修改、充值、提现、订单状态修改、后台核心操作等敏感操作,增加二次验证(短信/验证码/扫码),同时记录详细的操作日志(操作人、操作时间、操作内容、IP),便于溯源和审计。 - 核心接口增加签名+时间戳+nonce,防止请求重放
对配置修改、支付、充值等核心接口,增加接口签名验证(如MD5/SHA256),同时加入时间戳和随机数nonce,防止攻击者抓包重放接口实现越权操作。
测试层面:将越权测试纳入全流程测试,做到全覆盖
测试是发现越权漏洞的重要环节,必须将越权测试纳入项目的单元测试、集成测试、渗透测试,做到全流程、全覆盖,避免漏洞上线。
- 渗透测试重点测试越权漏洞,覆盖所有业务模块
项目上线前的渗透测试,将越权漏洞作为核心测试点,覆盖用户中心、订单、支付、后台管理、文件管理等所有核心业务模块,做到不遗漏任何接口和路径。 - 单元测试/集成测试加入权限校验用例
开发人员在写单元测试、集成测试时,必须加入权限校验用例,比如测试低权限用户访问高权限接口、同权限用户访问对方资源,确保所有用例通过后再提测。 - 黑盒+白盒结合测试,发现隐蔽的越权漏洞
黑盒测试用Burp批量遍历参数、重放接口,白盒测试直接检查代码中的权限校验逻辑,两者结合,能发现更隐蔽的越权漏洞,如代码中未对特殊值做校验、权限校验逻辑遗漏。
运维层面:做好日志审计与监控,及时发现异常越权操作
即使做好了开发和测试,仍可能存在漏网之鱼,运维层面的日志审计和监控,能及时发现异常的越权操作,将损失降到最低。
- 对敏感操作做实时日志审计,监控异常行为
对后台登录、系统配置修改、充值、提现、批量数据查询等敏感操作,做实时日志审计,监控异常行为(如同一IP批量遍历uid、普通用户访问/admin路径、低权限用户查询全量数据),发现异常立即告警。 - 权限变更后,立即销毁旧的session/token
当用户改密码、退出登录、被降权/封号后,立即销毁旧的session/token,禁止旧会话继续使用,防止攻击者利用旧会话实现越权操作。 - 定期做安全扫描,发现潜在的越权漏洞
定期用安全扫描工具(如AWVS、Nessus)对平台做全量扫描,同时组织内部渗透测试,发现潜在的越权漏洞,及时修复。 - 对开发人员做常态化的安全培训
定期对开发人员做Web安全培训,重点讲解越权漏洞的成因、危害和修复方案,强化开发人员的安全意识,让开发人员从源头规避越权漏洞。
结尾:越权挖掘的核心,是抓住“人性的侥幸”
越权漏洞之所以成为Web安全中最常见的漏洞类型,本质上不是技术问题,而是开发人员的人性问题——心存侥幸,觉得“前端做了校验就够了”“这个接口没人会发现”“小项目不会有人攻击”。
而越权挖掘的核心,就是抓住这种侥幸心理,吃透业务流程,不放过任何一个接口、任何一个参数、任何一个路径,用最基础的抓包、篡改、遍历技巧,发现开发人员的校验漏洞。本文的10个案例只是越权漏洞的冰山一角,实际渗透测试中,越权漏洞的场景千变万化,但核心逻辑始终不变:后端无校验,就有越权漏洞。
掌握本文的挖掘技巧和修复方案,然后在实际测试中举一反三,覆盖更多的业务场景,你就能快速成为越权挖掘高手。同时,也希望开发人员能树立正确的安全意识,将权限校验做到“宁滥勿缺”,因为在网络安全中,一次小小的校验遗漏,可能带来无法挽回的损失。