【SRC漏洞挖掘系列】第07期:越权访问(IDOR)—— 隔壁老王的故事
上期回顾:我们学会了把 100 块钱变成 1000 块(并发竞争)。今天聊点更“缺德”的——越权访问(IDOR)。
俗话说:“看好自己的门,管好自己的人。” 但在互联网上,很多人连门都没锁。🚪
一、什么是越权?(通俗版)
想象一个小区(网站),每家每户都有一个门牌号(ID)。
水平越权:你本是 101 室的业主,结果你拿着 102 室的钥匙也能开门,进去偷看老王的内衣颜色。
垂直越权:你本是普通住户(普通用户),结果你拿到了物业经理的万能卡,直接把小区大门卖了。
技术定义:Insecure Direct Object Reference (IDOR) —— 由于访问控制缺失,导致用户可以操作不属于自己权限范围内的数据。
二、水平越权:窥探隐私的“万能钥匙”
这是 SRC 里数量最多的漏洞,因为开发最容易忘。
1. 经典场景:查看订单
正常请求:
http
GET /order/detail?order_id=10001 HTTP/1.1 Cookie: user=A攻击请求:
http
GET /order/detail?order_id=10002 HTTP/1.1 Cookie: user=A结果:User A 看到了 User B 的订单详情(收货地址、电话、身份证号)。
危害:严重信息泄露。SRC 通常给高危。
2. 修改他人资料
请求包:
http
POST /user/update { "user_id": 10001, // 这是我的ID "nickname": "我是大帅比" }操作:把user_id改成10000(管理员ID)。
结果:把管理员的昵称改成了“我是大帅比”。😎
(如果只是改昵称,评级中危;如果能改管理员的密码或邮箱,直接 Critical)。
三、垂直越权:平民变皇帝
1. 后台功能的“裸奔”
很多网站的后台接口根本不做权限校验。
流程:
普通用户登录,抓包。
访问普通接口:
/api/user/info。猜测后台接口:
/api/admin/addUser。直接访问:
POST /api/admin/addUser {"username":"hacker"}。结果:普通用户直接给系统添加了一个管理员账号。
2. 前端藏匿(Hidden in JS)
有些按钮(如“删除用户”)在普通用户界面是隐藏的。
误区:以为隐藏了就安全了。
真相:JS 文件里写死了接口地址。只要抓包找到那个接口,照样能执行。
四、实战案例:如何把“老王”踢下线?
这是一个真实的 SRC 挖掘思路(虚构案例):
抓包:登录我的账号,看到请求里有
uid=12345。遍历:用 Burp Intruder 跑
uid=12340到uid=12350。发现:访问
uid=12344时,返回了大量用户隐私数据(包括手机号、住址)。升级:尝试修改
uid=12344的用户信息,发现可以修改密码。报告:提交“批量用户账号接管漏洞”。
奖金:到账 5000 元。💰
五、绕过技巧:ID 的“变脸”
有时候开发做了防护,但很弱。
1. 编码绕过
明文:
user_id=1编码:
user_id=MTIzNA==(Base64)哈希:
user_id=cbf7198176a809f32c6a0eacc0d5f067(MD5 of 1234)操作:把数字 ID 换成对应的编码格式,也许就能绕过正则匹配。
2. 弱比较(PHP 特性)
在 PHP 中,1 == '1admin'是成立的。
Payload:user_id=1admin可能等同于user_id=1。
3. UUID 不可预测性
如果网站用的是 UUID(如a1b2-c3d4-e5f6),很难遍历。
对策:去 JS 文件里找,或者去泄露的接口里找其他用户的 UUID。
六、SRC 报告中的“避坑指南”
行为 | 后果 |
|---|---|
批量遍历 10 万用户数据 | 封号/报警。证明漏洞只需 2-3 个账号。 |
修改他人密码并登录 | 高危违规。证明可以修改即可,不要登录。 |
删除他人数据 | 直接拉黑。这是破坏性测试。 |
正确姿势:
截图证明“我(A)能看到他(B)的数据”即可,不要做任何修改操作。
七、互动与思考
💬 互动话题:
大家挖越权时,最喜欢用什么字典?是user_id、uid、accountId还是openid?
有没有遇到过那种“把id=1改成id=2直接给我返回了 CEO 简历”的爽文剧情?😂
⚠️ 法律红线警示
严禁利用越权漏洞登录他人账号、查看大量用户隐私数据(如通讯录、聊天记录)。
严禁进行“遍历测试”(例如写个脚本跑 1-10000 导出全站数据),这涉嫌非法获取公民个人信息罪。
严禁修改、删除他人的关键数据(余额、订单、密码)。
测试原则:
仅测试与自己相关的两个账号(账号A越权看账号B)。
仅读取元数据(如头像、昵称),不要触碰敏感信息(如手机号、身份证)。
发现漏洞,立即停止,截图上报。
技术是放大镜,不是透视镜。请尊重他人的隐私,守住法律的底线。 🛡️
下一期,我们将深入“SSRF与内网探测”—— 从外网打进内网的跳板”。想知道怎么用一台 Web 服务器攻击 Redis 数据库吗?敬请期待!🔥
