文章总结: 本文科普水平越权漏洞,以某大学档案系统真实案例说明攻击原理:后端未验证数据归属权,仅凭自增id即可越权删除他人数据。修复建议包括添加用户过滤、验证所有权、使用uuid及限制注册。强调开发者应信任用户输入前先验证数据归属。
综合评分: 75
文章分类: web安全,漏洞分析,安全意识,实战经验
改个数字就能删别人数据?聊聊”水平越权”漏洞
三垣网安
2026年10月10日 21:29
湖南
在小说阅读器读本章
去阅读
在公众号小说中沉浸阅读
WEB 安全科普 · 从某大学档案系统漏洞说起
你住酒店时,房卡只能刷自己的房间。但如果有人发现——把房卡编号改个数字,就能刷开整层楼所有门,你会不会后背发凉?
这不是电影情节。2025 年 2 月,安全研究员披露某大学档案预约系统存在水平越权漏洞,普通用户改一个数字就能删掉别人的收件地址。
今天就用这个真实案例,掰开揉碎讲清楚。
一、什么是水平越权?
你在某网站登录后,地址栏显示 user\_id=123。你试着改成 124,结果操作了另一个用户的数据——这就是水平越权。
类比: 酒店给你一张刷 502 房的房卡,你把编号改成 503,也能刷开。不是因为你权限大了,而是锁没验证”这间房是不是你的”。
二、真实案例长什么样?
系统功能很简单:用户注册 → 登录 → 在”地址管理”里添加收件地址,用于档案邮寄。看似普通,却藏着致命缺陷。
三、攻击怎么发生的?四步还原
步骤 1:注册两个账号,分别添加地址
系统的注册页面向互联网开放,任何人都能注册。研究员注册了两个账号:
- 账号 A:添加了 2 条收件地址
- 账号 B:添加了 1 条收件地址
这就好比两个租客,各自往自己的快递柜里放了包裹——A 放了两个,B 放了一个。
步骤 2:登录账号 A,删除自己的地址
研究员登录账号 A,进入”地址管理”页面。正常情况下,页面只显示账号 A 自己的 2 条地址,看不到账号 B 的。
他点击其中一条地址的”删除”按钮——这是一次完全正常的操作。
步骤 3:抓包分析,发现漏洞
删除操作的同时,研究员用 Burp Suite(一款 Web 安全测试工具)拦截了这次删除的 HTTP 请求。结果发现包样式如下:
// 删除请求(简化)
POST /borrowAddress/deleteBorrowAddress.do
id=6 // 请求体里就这一个参数!
两个关键发现:
- 参数极其简单:删除操作只传了一个
id参数,没有任何其他验证信息 - id 是自增的:测试过程中发现 id 是逐渐递增的整数(1, 2, 3, 4, 5, 6…)
这意味着什么?意味着 id 可以被猜出来。如果系统不验证”这个 id 对应的地址是不是你的”,那改一下 id 就能删别人的东西。
步骤 4:改 id,越权删除
研究员把请求里的 id=6(自己的地址)改成账号 B 那条地址对应的 id,然后重新发送请求。结果——删除成功。
回到地址管理页面一看,对方的数据没了。报告截图上赫然写着四个字:“越权删除成功”。
注意: 整个过程不需要破解密码、不需要绕过防火墙,甚至不需要什么高级技术。只要会用浏览器抓包工具看请求参数,改一个数字——这就是”中危”的原因:利用门槛极低,但影响范围可控(仅限地址数据删除)。
四、为什么会有这个 bug?
核心原因就一个:后端没验证数据归属权。
收到删除请求后,后端直接拿着前端传过来的 id 去删数据,根本没检查”这条数据是不是当前登录用户的”。
有问题的 SQL(伪代码):
DELETE FROM address WHERE id = {用户传的id};
正确的 SQL:
DELETE FROM address
WHERE id = {用户传的id}
AND user_id = {当前登录用户};
少了 AND user\_id = ? 这一行,任何人改个 id 就能操作别人的数据。再加上 id 是自增整数,太好猜了,攻击门槛几乎为零。
五、怎么修?四招搞定
- 加用户过滤
所有查询和操作都带上 WHERE user\_id = 当前用户,从根本上隔离数据。
- 验证所有权
删、改之前先查一遍”这条记录是不是你的”,不是就直接拒绝。
- 用不可预测的 ID
把自增整数换成 UUID(类似 a3f7b2e1-4d8c-9a0b... 的随机字符串),让攻击者猜不到别人的 id。
- 限制注册
校园系统别让任何人随便注册,加上学校邮箱验证或人工审核。
一句话总结
水平越权是 Web 安全中最常见也最容易被忽略的漏洞。对开发者来说,记住一条铁律——
永远别信用户传的 id,用之前先问一句:”这东西是你的吗?”
关注三垣网安,学习更多网安技术
本文基于公开漏洞报告撰写,仅供安全学习与技术科普
Web安全 #水平越权 #IDOR #漏洞科普
免责声明:
本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。
任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。
本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我。
本文转载自:三垣网安 《改个数字就能删别人数据?聊聊”水平越权”漏洞》