越权漏洞
越权漏洞:用户通过篡改请求参数、ID、Cookie、Token 等,访问 / 操作不属于自己权限的数据、功能、后台接口,分为水平越权、垂直越权。
水平越权
同等级用户,查看 / 修改别人数据
场景:个人订单、收货地址、聊天记录、账单、手机号
原理:后端只校验登录,不校验数据归属
示例:
用户 A:user_id=1001 看自己订单
篡改参数为 user_id=1002,直接查看用户 B 所有订单
垂直越权
普通用户越权使用管理员功能
场景:删用户、改配置、后台登录、发布公告、权限修改
原理:未做角色权限校验
示例:
普通用户抓包访问 /admin/user-del.php 直接删除管理员账号
触发点
URL 参数:?id=、?uid=、?userid=、?orderid=
POST 表单:账号 ID、订单 ID、商品 ID
Cookie:userid、role、admin
请求头:自定义身份标识
接口路径:直接访问后台路由 /admin/xxx
漏洞危害
批量盗取全站用户隐私信息
任意修改他人账号密码
低权限拿下网站后台
批量删数据、篡改业务数据
结合其他漏洞直接拿下服务器
检测方法
注册两个账号 A、B
A 查看自己数据抓包,复制请求
把 A 的 ID 改成 B 的 ID 重放
能查到 B 数据 = 水平越权
普通用户访问管理员接口 = 垂直越权
修复
后端强制校验数据归属
查数据必须同时校验:登录用户 ID = 数据所属用户 ID
接口做角色权限控制
区分普通用户、管理员,非管理员拦截后台接口
禁止前端传关键身份 ID
用户 ID、权限等级全部从后端 Session/Token获取
路由拦截
未授权用户直接拦截所有后台目录
参数加密
订单 ID、用户 ID 不使用纯数字自增 ID