ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

越权漏洞到底该怎么测?手把手教你挖掘

越权漏洞到底该怎么测?手把手教你挖掘 越权漏洞到底该怎么测手把手教你挖掘前言很多刚入门 Web 安全、准备冲 SRC 挖洞的小伙伴第一个上手的漏洞就是越权漏洞。在各大 SRC 平台里越权访问控制失效属于高频漏洞赏金稳定而且不需要掌握复杂的注入、XSS 知识新手也能成功挖出有效漏洞。但很多人踩坑只会简单改 URL 里的 id稍微复杂一点的接口、加密参数、JWT Token 场景就测不出问题经常误报提交漏洞被厂商打回。越权漏洞本质是后端没有做对象级权限校验系统只判断你是否登录却没有校验「这个资源是不是属于当前登录用户」。OWASP Top10 中它归类为访问控制失效Broken Access Control也是业务逻辑漏洞里最典型的一类。本文手把手完整讲解越权漏洞挖掘全流程包含原理、账号准备、测试思路、GET/POST/JSON 接口实战、常见坑点、特殊绕过技巧、漏洞验证、SRC 提交要点和修复方案。不管是渗透测试练习还是 SRC 提交挖洞看完直接就能上手实操。免责声明本文内容仅用于网络安全学习、靶场练习、授权范围内的安全测试。严禁在未获得目标系统书面授权的环境进行越权测试非法测试、越权获取他人隐私信息将承担法律责任。一、先分清两种核心越权水平越权 垂直越权1.1 水平越权平行越权IDOR 不安全的直接对象引用同角色、同级别的用户A 可以查看 / 修改 B 的数据。通俗例子用户 A 登录账号访问查看订单接口修改订单 ID直接看到用户 B 的订单、手机号、收货地址普通用户 A可以打开普通用户 B 的个人资料。核心权限等级一样只是访问了别人的资源。1.2 垂直越权纵向越权权限提升低权限账号可以访问高权限账号的功能、接口。通俗例子普通登录用户直接访问管理员后台接口查看所有用户列表、删除用户、修改全站配置。核心角色权限层级不一样低权限拿到高权限功能。补充很多新手容易混淆简单一句话记忆✅ 水平你看别人的私人数据✅ 垂直普通用户干管理员的事。二、测试前期准备账号环境 工具准备2.1 必备账号重中之重很多人漏这一步至少准备2 个同权限普通账号 1 个管理员账号用户 A普通账号 A生成属于 A 的订单、资料、文件用户 B普通账号 B生成属于 B 的订单、资料、文件Admin管理员账号用来对比高权限接口返回原理越权是跨账号对比只用一个账号根本测不出水平越权。2.2 推荐工具Burp Suite抓包、Repeater 重放核心工具Autorize 插件可以自动化辅助检测越权适合批量接口测试浏览器开发者工具抓前端接口、JS 源码寻找隐藏接口、参数简单记事本记录所有接口、参数、每个账号对应的资源 ID订单 id、user_id、file_id2.3 前期踩点登录账号 A完整走一遍业务流程把所有接口全部抓包梳理业务模块个人中心、订单、发票、文件下载、消息通知、修改密码、地址管理、合同预览等。把接口里所有资源标识参数全部记录下来id、user_id、order_id、file_id、uid、recordId、billId这些就是越权测试的重点参数。三、完整测试流程手把手实操步骤 1登录用户 A抓正常业务请求举个 GET 接口例子查看 A 自己订单GET /api/order/detail?order_id10001 HTTP/1.1 Host: test.com Cookie: session用户A的session Authorization: Bearer A的token响应返回用户 A 的订单、姓名、手机号、收货地址。步骤 2修改资源 ID保持 A 的身份凭证不变把order_id10001改成用户 B 的订单order_id10002Cookie/Token保持 A 账号不变直接发送请求。GET /api/order/detail?order_id10002 HTTP/1.1 Host: test.com Cookie: session用户A的session Authorization: Bearer A的token判断结果返回用户 B 的订单敏感数据200 正常返回 →存在水平越权返回 403 / 提示无权限 / 订单不存在 → 权限校验正常不存在漏洞关键点身份凭证Cookie/Token不能换很多新手错误把 Cookie 换成 B 账号这样等于正常登录 B根本不是越权。步骤 3POST 请求、JSON 接口越权测试最容易被忽略越权不只是 URL 上的 GET 参数POST 表单、JSON 请求体里面的user_id、order_id同样是重灾区。示例 JSON 请求用户 A 修改自己收货地址POST /api/user/updateAddress HTTP/1.1 Host: test.com Content-Type: application/json Authorization: Bearer A-token { user_id: 2001, address: 长沙市XX街道 }修改user_id为用户 B 的 id保持 A 的 Token 不变发包{ user_id: 2002, address: 长沙市XX街道 }如果成功修改用户 B 的地址就是越权修改高危漏洞。划重点越权不止查询读新增、修改、删除操作的越权危害更大SRC 赏金更高。不要只测查看接口步骤 4垂直越权测试用普通用户 A 登录抓包拿到 A 的 Token/Cookie寻找管理员接口/admin/user/list、/api/admin/delUser、/system/config寻找方式JS 源码、历史接口、robots.txt、目录爆破使用普通用户 A 的身份凭证直接请求管理员接口成功访问管理员列表、执行管理员操作 → 垂直越权常见坑很多前端只是隐藏管理员菜单接口还保留在后端前端看不到不代表接口不存在。四、各类业务场景越权测试清单直接照着测整理 SRC 最常出越权的业务模块测试的时候逐个覆盖用户资料模块查看个人信息、修改手机号、修改头像参数user_id、uid订单模块订单详情、物流、发票、取消订单、退款参数order_id、bill_no文件 / 附件模块下载合同、身份证图片、报表 PDF参数file_id、attach_id文件下载接口是越权重灾区消息模块站内私信、聊天记录参数msg_id、chat_id审批流程审批记录、待办详情参数record_id账号管理重置密码、解绑手机参数target_user_id越权重置别人密码属于高危静态资源 URL 也不要放过很多 OSS 对象存储文件地址依靠 id 编号没有鉴权修改 id 直接下载他人文件。五、进阶特殊场景越权测试新手容易漏掉5.1 参数加密场景现在很多系统不会直接明文 id参数经过 AES、Base64 等加密。思路用户 A 请求拿到加密后的 id 值用户 B 请求拿到 B 对应的加密 id直接把请求里 A 的加密 id 替换为 B 的加密 id保持 A 的 token 发包。很多开发者只做前端加密后端没有校验资源归属加密只是伪装依然存在越权。5.2 JWT Token 越权测试JWT 场景有两类测试思路保持原有 JWT 不变修改请求体 / URL 里的资源 id最常见尝试修改 JWT 载荷里面的userid、role如果后端未校验签名直接造成垂直越权。5.3 批量查询接口越权批量查询接口数组形式传递多个 id例如{ ids:[10001,10002] }用户 A 正常只能查 10001如果加上 B 的 id 10002接口同时返回两个人数据批量越权。5.4 基于 Referer、前端隐藏控制的假权限有些开发只依靠前端隐藏按钮、判断 Referer 头做权限控制。这种属于前端控制后端无校验。测试方法Burp 直接重放请求删掉 Referer 头绕过前端限制。记住前端所有权限控制全部不可信所有权限判断必须放在后端。5.5 资源重定向场景接口 302 重定向到文件地址很多人只看 302 就跳过测试。需要跟进重定向后的地址验证是否可以越权获取其他文件。六、漏洞判定怎么区分真越权和误报很多新手提交漏洞被厂商驳回大多是不会判断是否为真实越权。✅ 真实越权判定标准使用账号 A 的登录凭证没有登录账号 B成功读取 / 修改属于账号 B 的私有资源响应返回真实、可确认属于 B 的业务数据手机号、订单号、姓名❌ 不属于越权误报切换 Cookie 为 B 账号拿到数据属于正常登录返回数据空白、统一提示 “无权限”没有返回 B 真实信息接口返回通用测试数据无法确认归属验证小技巧提前给 A、B 两个账号设置明显不同信息例如 A 手机号 13800000001B 手机号 13800000002方便一眼区分返回的数据是谁的。七、越权漏洞挖掘常见踩坑总结只测 GET不测 POST 和 JSON 接口大量越权藏在 POST 请求体只用单个账号测试没有两个账号对比根本发现不了水平越权测试的时候更换 Cookie/Token直接变成正常登录另一个账号测试无效只测试查询接口忽略修改、删除、退款等高危写接口看到 id 不是纯数字就跳过UUID、加密串、字符串编号同样会存在越权依赖扫描器自动探测AWVS、Xray 这类自动化工具很难发现越权越权高度依赖人工业务理解人工测试是核心。八、SRC 漏洞报告怎么写越权模板直接套用提交漏洞时清晰的复现步骤更容易被厂商确认模板参考漏洞描述系统订单详情接口存在水平越权漏洞攻击者登录普通用户账号修改请求中 order_id 参数可查看其他用户订单信息包含手机号、收货地址等敏感个人信息。复现步骤注册账号 A创建订单获取订单 ID10001注册账号 B创建订单获取订单 ID10002登录账号 A抓包访问自己订单的请求修改请求内 order_id10002Cookie 保持账号 A 不变发送请求接口返回账号 B 的订单、手机号、收货地址。漏洞影响攻击者可遍历订单 ID批量获取平台大量用户隐私数据造成用户信息泄露。修复建议后端接口在查询订单时校验订单所属用户 ID和当前登录用户身份做比对数据库查询时增加 where 条件限定 user_id 当前登录用户不允许跨用户访问资源。九、后端修复方案开发视角提交漏洞可附带越权的核心修复原则每一次资源访问后端都校验该资源是否属于当前登录用户。查询 SQL 增加用户归属条件错误写法select * from order where id #{order_id};安全写法select * from order where id #{order_id} and user_id #{current_login_userid};所有接口做对象级权限校验不能只校验是否登录高权限接口增加角色校验拒绝普通用户访问管理员功能文件下载、附件接口增加归属校验禁止通过遍历 file_id 下载其他用户文件不要依靠前端隐藏菜单、Referer、JS 控制权限权限校验逻辑统一封装全局复用避免多个接口漏写权限判断。十、总结越权漏洞是新手入门 SRC 的首选漏洞它不依赖复杂的漏洞原理核心思路一句话用 A 的身份尝试访问 B 的资源。关键点回顾水平越权同角色访问别人数据垂直越权低权限访问管理员功能测试必备至少 2 个普通账号抓包修改资源 ID保持身份凭证不变覆盖 GET、POST、JSON、文件下载、加密参数等全部接口自动化扫描只能辅助越权必须人工结合业务测试漏洞提交时准备好清晰复现步骤、截图区分真实漏洞和误报。越权的本质是业务逻辑上的权限缺失只要后端忘记校验资源归属就会出现漏洞。多在靶场练习熟悉不同业务场景慢慢就能稳定挖到越权漏洞。本文为 Web 安全学习笔记适合 SRC 挖洞、渗透测试面试复习。如果对你有帮助欢迎点赞收藏。了解网络安全首先要搞清楚下面这些前提网络安全到底包含哪些技术是否需要会编程网络安全行业有哪些职业方向“我”该如何选择网络安全的职业发展和成长路线是什么如果你是准备学习网络安全黑客或者正在学习下面这些你应该能用得上①网络安全学习路线②20份渗透测试电子书③安全攻防357页笔记④50份安全攻防面试指南⑤安全红队渗透工具包⑥网络安全必备书籍⑦100个漏洞实战案例⑧安全大厂内部视频资源⑨历年CTF夺旗赛题解析一、网络安全黑客学习路线网络安全黑客学习路线形成网络安全领域所有的知识点汇总它的用处就在于你可以按照上面的知识点去找对应的学习资源保证自己学得较为全面。二、网络安全教程视频我们在看视频学习的时候不能光动眼动脑不动手比较科学的学习方法是在理解之后运用它们这时候练手项目就很适合了。三、网络安全CTF实战案例光学理论是没用的要学会跟着一起敲要动手实操才能将自己的所学运用到实际当中去这里带来的是CTFSRC资料HW资料毕竟实战是检验真理的唯一标准嘛~四、网络安全面试题最后我们所有的作为都是为就业服务的所以关键的临门一脚就是咱们的面试题内容所以面试题板块是咱们不可或缺的部分这里我给大家准备的就是我在面试期间准备的资料。网安其实不难难的是坚持和相信自己我的经验是既然已经选定网安你就要相信它相信它能成为你日后进阶的高效渠道这样自己才会更有信念去学习才能在碰到困难的时候坚持下去。机会属于有准备的人这是一个实力的时代。人和人之间的差距不在于智商而在于如何利用业余时间只要你想学习什么时候开始都不晚不要担心这担心那你只需努力剩下的交给时间这份完整版的网络安全学习资料已经上传CSDN朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】
返回列表