一、什么是访问控制漏洞?
访问控制(Access Control)用于限制用户“能访问什么资源、能执行什么操作”。
当系统没有正确校验用户身份与权限时,就会产生:
越权访问
未授权操作
数据泄露
管理员功能被普通用户调用
这是 Web 系统中最常见、危害最大的漏洞之一。 (CN-SEC)
二、访问控制漏洞分类
1. 水平越权(Horizontal Privilege Escalation)
定义
同等级用户之间互相访问数据。
例如:
用户A修改用户B资料
查看他人订单
下载他人文件
示例流程图
用户A登录
│
▼
GET /user/info?id=1002
│
修改为
▼
GET /user/info?id=1003
│
▼
成功查看用户B数据
配图
┌──────────┐
│ 用户A │
└────┬─────┘
│ 修改ID
▼
┌──────────┐
│ 用户B数据 │
└──────────┘
常见原因
只校验是否登录
未校验资源归属
直接信任前端参数
修复方案
服务端校验用户身份
每次操作验证资源 owner
不使用可预测ID
三、垂直越权(Vertical Privilege Escalation)
定义
低权限用户访问高权限功能。
例如:
普通用户进入后台
调用管理员接口
删除系统数据
示例
/admin/deleteUser?id=1
普通用户直接访问后台接口。
配图
普通用户
│
▼
管理员接口
│
▼
执行成功
常见原因
后台仅前端隐藏
URL未做权限验证
JWT角色字段可伪造
修复方案
RBAC权限模型
服务端统一鉴权
后端校验角色
四、未授权访问
定义
接口完全没有鉴权。
任何人都能直接访问。
示例
/api/getAllUser
无需登录即可获取数据。
风险
数据泄露
用户信息外泄
后台暴露
配图
未登录用户
│
▼
API接口
│
▼
返回敏感数据
五、目录遍历导致的访问控制问题
示例
/download?file=../../etc/passwd
攻击者访问系统敏感文件。
配图
Web目录
│
../../
│
▼
系统敏感文件
修复
限制文件目录
过滤 ../
白名单路径
六、常见访问控制漏洞场景
七、漏洞检测方法
1. 抓包修改ID
使用:
BurpSuite
浏览器开发者工具
测试:
id=1001
改为
id=1002
2. 删除Token测试
Authorization:
看接口是否还能访问。
3. 切换普通用户账号
验证:
是否能调用管理员接口
是否能查看他人数据
八、实际危害
访问控制漏洞往往比 SQL 注入更危险。
因为:
直接导致数据泄露
可获取后台权限
影响所有用户
经常被忽视
大量真实攻击案例都来源于“越权”。
九、推荐安全方案
推荐权限架构
用户请求
│
▼
认证(Authentication)
│
▼
权限校验(Authorization)
│
▼
资源访问
最佳实践
1. 后端强制鉴权
不要相信前端。
2. 最小权限原则
普通用户只给最少权限。
3. RBAC模型
角色:
admin
editor
user
不同角色不同权限。
4. 统一权限中间件
避免遗漏接口。
十、总结
访问控制漏洞本质:
“用户做了本不该做的事”
核心问题:
没验证身份
没验证权限
没验证资源归属
重点关注:
水平越权
垂直越权
未授权访问
学习路线建议
建议配合学习:
HTTP协议
Session/JWT
OAuth
RBAC权限模型
API安全
BurpSuite越权测试
相关系列文章: