适用场景:护网漏洞研判、业务渗透测试、代码审计、后端安全面试、企业权限加固

漏洞定位:OWASP TOP10 2021 排名第一高危漏洞,是所有越权访问、未授权访问、目录遍历、接口非法访问的核心根源,属于护网行动红队重点挖掘、蓝队重点整改的高频业务漏洞,全网90%的业务安全漏洞均归属此类。

前言

失效的访问控制(Broken Access Control),核心是服务端未对用户身份、操作权限做有效校验,导致用户可以操作超出自身权限范围的接口、数据、文件及功能。区别于代码层漏洞,该漏洞属于业务层高危缺陷,普遍存在于各类Web项目、管理后台、运维系统中。

多数企业仅做前端权限隐藏,后端未做强制鉴权,攻击者通过抓包篡改参数、直接访问接口,即可实现越权查数据、接管后台权限。本文从漏洞原理、分类场景、攻击链路、Java代码修复、企业防御、面试考点全方位梳理,适配实战挖洞与护网合规加固。

一、漏洞基础原理与攻击链路

1. 漏洞成因

核心根源为后端权限校验失效,主要分为三类问题:仅前端做权限控制、后端接口无统一鉴权、用户身份与资源未做绑定校验。开发常误以为前端隐藏按钮、禁用功能即可保障安全,忽略攻击者可直接调用后端接口、篡改请求参数绕过前端限制。

2. 完整攻击链路

用户登录低权限账号 → 抓包分析接口参数 → 篡改ID/权限参数或直接访问未授权接口 → 后端无二次校验 → 越权读取/篡改数据、访问后台功能 → 批量泄露业务数据、垂直提权接管系统。

3. 代码审计高危场景

后端接口只判断登录状态,未校验用户角色、数据归属;接口通过前端传参判定权限,服务端无本地权限校验逻辑。

Java典型漏洞代码示例(水平越权):

// 漏洞代码:直接接收前端传入的用户ID查询数据,未校验数据归属
@GetMapping("/user/info")
public User getUserInfo(@RequestParam Long userId) {
    // 可随意篡改userId,查询任意用户数据
    return userService.getById(userId);
}

二、核心漏洞分类与实战业务场景

失效访问控制主要分为四大类,覆盖绝大多数实战挖洞场景,也是护网重点排查项:

1. 水平越权

同权限角色用户之间数据互通,攻击者可查看、修改其他普通用户数据。常见场景:个人订单查询、账单详情、用户资料接口,篡改用户ID、订单ID遍历他人数据。

2. 垂直越权

低权限用户可访问高权限管理员功能,属于高危提权漏洞。常见场景:普通用户调用后台新增用户、修改权限、系统配置接口,直接接管后台管理权限。

3. 未授权访问

无需登录即可访问核心接口、后台页面、运维功能。常见场景:监控后台、项目接口文档、系统配置页面、日志查询接口无登录拦截。

4. 目录遍历访问

未限制文件访问路径,通过../穿越目录读取服务器任意配置文件、源码、密钥文件,归属访问控制失效分支。

三、漏洞高危危害

1. 数据批量泄露:越权遍历用户手机号、身份证、订单、客户信息,引发用户隐私泄露,触发《数据安全法》合规风险;

2. 业务恶意篡改:篡改他人订单、合同、收货信息,造成企业经济损失、业务纠纷;

3. 全网权限接管:垂直越权提权至管理员权限,操作系统配置、删除数据、上传文件,完全接管后台;

4. 内网渗透入口:护网场景中,访问控制漏洞常作为初始突破口,为后续内网横向移动、漏洞利用提供基础。

四、Java代码层核心落地修复方案

杜绝前端鉴权、参数鉴权,采用统一拦截+RBAC权限模型+数据归属校验三层防护,从代码底层杜绝漏洞。

1. 全局拦截器统一鉴权

所有接口统一拦截,校验登录状态、用户角色,拦截未授权访问请求。

2. 基于RBAC角色权限管控

区分管理员、普通用户、访客等角色,精细化分配接口权限,低权限用户无法访问高权限接口。

3. 数据归属强制校验(解决水平越权)

查询数据时,后端强制绑定当前登录用户ID,不信任前端传入参数,彻底杜绝越权查询。

安全代码示例:

// 安全写法:从Token获取当前登录用户,强制校验数据归属
@GetMapping("/user/info")
public User getUserInfo() {
    // 从登录令牌获取当前用户ID,不接收前端参数
    Long currentUserId = UserContext.getUserId();
    // 仅查询当前用户自身数据
    return userService.getById(currentUserId);
}

五、企业级多层防御规范

1. 代码层规范:所有接口禁止前端传参控制权限,权限、数据校验全部在后端实现;

2. 网关层防护:通过网关统一拦截未登录、无权限请求,做全局权限过滤;

3. 运维层加固:关闭后台匿名访问、限制内网运维接口访问权限,隐藏敏感管理入口;

4. 测试审计:采用双账号测试法(普通账号+管理员账号)全覆盖测试接口,定期开展权限漏洞专项审计。

六、安全面试高频考点

1. 面试必背考点

Q1:水平越权和垂直越权的区别?

水平越权:同级用户数据互通,无权限提升,仅数据泄露;垂直越权:低权限提升为高权限,可操作管理功能,危害更高。

Q2:为什么前端隐藏权限无法防御越权?

前端展示仅为视觉限制,攻击者可抓包直接调用后端接口、篡改参数,后端无校验则直接触发漏洞。

Q3:失效访问控制的最优防御方案?

后端统一鉴权、RBAC精细化角色权限、数据归属强制校验、网关全局拦截,多层防护闭环。

七、全文总结

失效的访问控制作为OWASP2021 TOP1漏洞,核心成因是后端权限校验缺失、信任前端参数、数据身份未绑定。漏洞门槛极低、危害极广,是护网和面试的核心重点。防御核心逻辑:摒弃前端鉴权,所有权限、数据校验后置,依托统一拦截器和RBAC模型做精细化管控,配合企业多层防护,彻底杜绝越权、未授权访问风险。

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐