恒美微站
首页
关于我们
建站服务
主题模板
案例展示
资讯中心
联系我们
改个数字就能删别人数据?聊聊“水平越权“漏洞
首页
资讯中心
/
改个数字就能删别人数据?聊聊“水平越权“漏洞
改个数字就能删别人数据?聊聊“水平越权“漏洞
发布时间:2026/10/19 2:03:04
改个数字就能删别人数据聊聊水平越权漏洞WEB 安全科普· 从某大学档案系统漏洞说起你住酒店时房卡只能刷自己的房间。但如果有人发现——把房卡编号改个数字就能刷开整层楼所有门你会不会后背发凉这不是电影情节。2025 年 2 月安全研究员披露某大学档案预约系统存在水平越权漏洞普通用户改一个数字就能删掉别人的收件地址。今天就用这个真实案例掰开揉碎讲清楚。一、什么是水平越权你在某网站登录后地址栏显示user_id123。你试着改成124结果操作了另一个用户的数据——这就是水平越权。类比酒店给你一张刷 502 房的房卡你把编号改成 503也能刷开。不是因为你权限大了而是锁没验证这间房是不是你的。术语速查术语含义IDOR不安全的直接对象引用就是改个 ID 就能越权水平越权A 普通用户操作 B 普通用户的数据垂直越权普通用户冒充管理员本次案例属于水平越权二、真实案例长什么样项目详情漏洞类型水平越权危害等级中危受影响系统某大学档案预约系统.edu.cn漏洞接口deleteBorrowAddress.do实际影响删除其他用户的收件地址系统功能很简单用户注册 → 登录 → 在地址管理里添加收件地址用于档案邮寄。看似普通却藏着致命缺陷。三、攻击怎么发生的四步还原步骤 1注册两个账号分别添加地址系统的注册页面向互联网开放任何人都能注册。研究员注册了两个账号账号 A添加了2 条收件地址账号 B添加了1 条收件地址步骤 2登录账号 A删除自己的地址研究员登录账号 A进入地址管理页面。正常情况下页面只显示账号 A 自己的 2 条地址看不到账号 B 的。他点击其中一条地址的删除按钮——这是一次完全正常的操作。步骤 3抓包分析发现漏洞删除操作的同时研究员用Burp Suite一款 Web 安全测试工具拦截了这次删除的 HTTP 请求。结果发现// 删除请求简化 POST /borrowAddress/deleteBorrowAddress.do id6 // 请求体里就这一个参数包如下图所示两个关键发现参数极其简单删除操作只传了一个id参数没有任何其他验证信息id 是自增的测试过程中发现 id 是逐渐递增的整数1, 2, 3, 4, 5, 6…这意味着什么意味着 id 可以被猜出来。如果系统不验证这个 id 对应的地址是不是你的那改一下 id 就能删别人的东西。步骤 4改 id越权删除研究员把请求里的id6自己的地址改成账号 B 那条地址对应的 id然后重新发送请求。结果——删除成功。回到地址管理页面一看对方的数据没了。说明此处确实存在越权删除四、为什么会有这个 bug核心原因就一个后端没验证数据归属权。收到删除请求后后端直接拿着前端传过来的 id 去删数据根本没检查这条数据是不是当前登录用户的。-- 有问题的 SQL伪代码DELETEFROMaddressWHEREid{用户传的id};-- 正确的 SQLDELETEFROMaddressWHEREid{用户传的id}ANDuser_id{当前登录用户};少了AND user_id ?这一行任何人改个 id 就能操作别人的数据。再加上 id 是自增整数太好猜了攻击门槛几乎为零。五、怎么修四招搞定加用户过滤所有查询和操作都带上WHERE user_id 当前用户从根本上隔离数据。验证所有权删、改之前先查一遍这条记录是不是你的不是就直接拒绝。用不可预测的 ID把自增整数换成 UUID类似a3f7b2e1-4d8c-9a0b...的随机字符串让攻击者猜不到别人的 id。限制注册校园系统别让任何人随便注册加上学校邮箱验证或人工审核。一句话总结水平越权是 Web 安全中最常见也最容易被忽略的漏洞。对开发者来说记住一条铁律——永远别信用户传的 id用之前先问一句“这东西是你的吗”#Web安全#水平越权#IDOR#漏洞科普本文基于公开漏洞报告撰写仅供安全学习与技术科普