文章总结: 文档系统阐述了未授权访问、水平越权与垂直越权三类访问控制漏洞的定义与区别,提供了从信息收集到响应分析的通用挖掘流程。文章详细列举了针对各类漏洞的具体测试步骤、关注场景与实战技巧,并剖析了挖掘失败的主观原因,强调实践、JS分析与发散思维的重要性,具有较强的实战指导价值。 综合评分: 87 文章分类: WEB安全,渗透测试,漏洞分析,实战经验
访问控制篇之如何挖掘?
原创
一个努力的学渣 一个努力的学渣
一个努力的学渣
2026年3月10日 11:30 北京
免责声明
本文只做学术研究使用,不可对真实未授权网站使用,如若非法他用,与平台和本文作者无关,需自行负责!
未授权访问 vs 水平越权 vs 垂直越权
| | | | | | — | — | — | — | | 对比维度 | 未授权访问 | 水平越权 | 垂直越权 | | 挖掘核心 | 无登录拦截 | 无角色/权限校验 | 无资源归属校验 | | 是否需要登录 | 完全不需要 | 必须登录 | 必须登录 | | 权限变化 | 匿名 → 直接用管理员 / 敏感功能 | 同权限,横向跨用户 | 低权限 → 高权限提权 | | 核心缺陷 | 无登录校验 + 无权限校验 | 未校验「数据归属」 | 未校验「角色权限」 | | 关键操作 | 直接请求敏感路径/接口 | 篡改资源ID、遍历ID | 直接请求敏感路径/接口 | | 高频测试点 | 直接请求敏感路径/接口 | 管理员接口、权限参数、批量操作 | 个人资料、订单、文件、批量接口 | | 攻击难度 | 极低(直接访问 URL) | 低(改 ID) | 中(改参数 / 猜接口) | | 危害等级 | 最高(系统直接裸奔) | 中高(用户数据泄露) | 极高(系统被接管) | | 通俗比喻 | 大门敞开,路人随便进 | 住户偷隔壁住户东西 | 住户偷偷进物业办公室 |
#
通用挖掘
挖掘这三类漏洞的思路高度相似,核心是 “篡改身份/资源标识,观察响应”。通用流程如下:
-
信息收集
-
获取多个测试账号(至少两个同权限账号、一个低权限账号、一个高权限账号)
-
遍历应用功能,记录所有请求包(特别是包含ID、用户名、角色等参数的请求)
-
识别敏感接口(如用户信息、订单、文件下载、管理后台接口)
-
抓包分析
-
使用Burp Suite等工具拦截请求,重点关注:
-
URL路径(如 /user/123、/admin/delete)
-
请求参数(GET参数、POST body、JSON/XML字段)
-
Cookie、Header(如 Authorization、X-UID、role)
-
标记哪些参数可能代表用户身份或资源标识
-
篡改测试
-
身份标识篡改:修改代表用户ID、会话ID的参数,尝试访问其他用户资源
-
角色篡改:修改代表用户角色的字段(如 role=user → role=admin)
-
资源标识枚举:遍历数字ID、UUID、文件名等,尝试访问未授权的资源
-
直接访问未授权接口:尝试访问未在正常功能中出现的后台路径或API端点
-
响应分析
-
观察是否返回了其他用户的数据或成功执行了操作
-
注意响应状态码(200成功,302跳转,403禁止,404不存在),有些漏洞可能隐藏在302或错误信息中
-
跨账号/跨权限验证
-
若发现疑似漏洞,使用另一个同权限账号或低权限账号复现,确保不是自己访问自己
-
使用不同浏览器或隐私模式测试未授权访问
未授权访问挖掘
-
目标:找到无需登录就能访问的敏感接口或文件
-
挖掘步骤:
-
收集目标系统所有接口/路径(通过前端抓包、路径枚举、第三方工具扫描)
-
退出所有登录状态(清除Cookie、Token),直接请求敏感接口/路径
-
观察响应:若返回正常数据、可执行操作(如查看用户列表、导出数据),则漏洞成立
-
延伸测试:枚举敏感文件、测试接口、第三方组件(Swagger/Actuator),确认是否存在未授权访问
-
关注点:
-
所有需要登录的页面/接口,尝试直接访问其URL(复制链接到无痕窗口)
-
目录扫描:使用工具扫描常见敏感路径(如 /admin、/backup、/api、/swagger、/logs、/.git)
-
静态文件泄露:检查上传目录是否开启目录浏览,尝试枚举文件名
-
调试接口/测试页面:寻找开发遗留的 /test、/debug、/demo 等路径
-
API文档:Swagger UI等文档接口若未加验证,可泄露所有API信息
-
重点挖掘场景:
-
管理后台路径:/admin、/manage、/system、/manager
-
敏感接口:/api/admin/*、/api/export、/api/config、/api/backup
-
敏感文件:备份SQL、配置文件(.env、config.php)、日志文件、.git目录
-
测试/调试接口:/test、/debug、/dev、/health
-
第三方组件:Swagger-ui.html、Actuator、PHPMyAdmin、Druid监控面板
-
挖掘技巧:
-
Burp Suite清空Cookie/Token,批量发送敏感路径请求
-
利用字典枚举路径(如admin路径字典),快速排查
-
对于需要特定参数的接口,尝试使用公开或猜测的参数(如ID=1)进行访问
-
重点关注“返回200状态码+正常数据”的请求
水平越权挖掘
-
目标:以A用户身份,访问B用户的私有资源或操作B用户的资源
-
挖掘步骤:
-
准备两个同权限账号(如用户A、用户B),分别登录,抓包获取各自的资源请求(如查看个人订单、个人资料)
-
提取请求中的资源ID(user_id、order_id、file_id等),记录用户A的资源ID(如order_id=888)
-
登录用户B,用用户B的Cookie/Token,将请求中的资源ID篡改为用户A的ID
-
发送请求,观察响应:若能看到用户A的订单、资料,或能修改/删除用户A的资源,则漏洞成立
-
延伸测试:遍历自增ID、批量传入多个他人ID,测试批量越权
-
关注点:
-
任何包含用户标识或资源标识的请求,如:
-
/user/profile?uid=123
-
/order/456
-
/api/getChat?friendId=789
-
/download?file=user_123_invoice.pdf
-
标识符多为数字ID、邮箱、用户名、UUID等
-
操作型接口:修改资料、删除评论、取消订单等
-
重点挖掘场景:
-
个人中心相关:查看/修改个人资料、绑定手机号、重置密码
-
订单/支付相关:查看他人订单、修改他人订单状态、查看他人支付记录
-
文件/附件相关:下载他人私有文件、查看他人上传的证件照/附件
-
批量接口:批量查询、批量导出、批量删除(传入多个他人ID)
-
自增ID资源:用户ID、订单ID、文件ID为连续数字(易遍历)
-
挖掘技巧:
-
重点关注URL、POST请求体、请求头中的ID类参数
-
参数可能隐藏在多个地方:URL、POST表单、JSON、XML、Cookie、Header
-
如果参数被加密或编码,尝试寻找其生成方式或绕过(如删除加密参数,服务端可能使用默认值)
-
用Burp Suite的Intruder功能遍历自增ID
-
测试批量接口时,传入多个不同用户的ID,验证是否均能访问
垂直越权挖掘
-
目标:低权限用户(如普通用户)执行高权限功能(如管理员操作)
-
挖掘步骤:
-
登录低权限账号(如普通用户),抓包记录所有正常请求(获取Cookie/Token)
-
收集高权限功能接口/路径(通过前端隐藏菜单、路径枚举、公开漏洞案例)
-
用低权限账号的Cookie/Token,直接请求高权限接口/路径
-
尝试篡改权限相关参数(如role=user→role=admin、X-User-Level=1→99),重新请求
-
观察响应:若能访问高权限页面、执行高权限操作(如删用户、改配置),则漏洞成立
-
枚举HTTP方法:有时GET无权限,但POST可能有;或反之
-
关注点:
-
管理后台接口:路径常包含 /admin、/manage、/console
-
高权限API:如用户管理、系统设置、数据统计、权限分配等
-
角色标识:请求中可能带有 role、group、isAdmin 等字段
-
操作类型参数:如 type=deleteUser、action=addAdmin
-
重点挖掘场景:
-
管理员专属功能:用户管理、角色配置、系统参数修改、日志清空
-
敏感操作接口:批量删除、全量数据导出、任意用户密码重置
-
敏感操作接口:批量删除、全量数据导出、任意用户密码重置
-
前端隐藏的高权限菜单(通过浏览器控制台修改DOM可显示)
-
挖掘技巧:
-
优先枚举/admin、/api/admin开头的接口
-
用Burp Suite替换权限参数,批量测试
-
注意“低权限账号能看到高权限接口,但提示无权限”,可能是前端拦截,需直接请求接口验证
为什么你还是挖不到?
-
你只看了理论,却没有动手实践:
-
挖洞是一项实践性极强的技能,没有大量的手动测试和多账号对比,理论永远只是纸上谈兵
-
你忽略了前端JS这座金矿:
-
许多隐藏接口和参数就躺在JS文件里,等着你去发现。如果你从未认真分析过JS文件,你可能错失了80%的漏洞入口
-
当然,你得会分析JS,比如JS加解密、路径拼接等,不然哪怕你思维再好,JS这座金矿你也得不到
-
你上来就是一顿乱测,连页面功能都不了解:
-
打开系统就急着输入各种路径、篡改参数,连系统有哪些功能、每个功能是做什么的都没摸清,盲目测试只会浪费时间,根本抓不到漏洞重点
-
你不会收集字典,只会找别人要字典:
-
字典:简单说就是挖洞时用到的“路径、参数清单”,比如可能存在漏洞的页面路径、常用的参数值,有了合适的字典,才能快速找到漏洞入口
-
字典如何寻找:
-
GitHub等网站寻找
-
有些工具自带,如目录扫描工具等
-
AI生成
-
Fuzz
-
根据现有网站,提取用户名,最后生成专有自带
-
最后把所有的字典都整理到一起,方便后期测试
-
你只盯表面,却没关注”隐蔽角落”:
-
总死磕显眼的管理后台入口,觉得只有这里才有漏洞,却忽略了那些不显眼的功能——比如批量导出、密码重置、文件下载,这些地方往往最容易放松警惕
-
你思维太局限,只会按照别人的路去走:
-
逻辑漏洞,最重要的就是思维,网上很多文章,为什么你看了叹为观止,因为你思维不够野,太局限了,你被自己的思维困住了,所以只能在别人后面捡别人的思维,然后高呼 “大佬求带”
-
你太依赖工具,或者工具没用到点子上:
-
工具,是人写的,工具的思维是固定的,只会按照已有的思维去挖洞,而人的思维是无穷尽的,可能下一秒一个逗逼的想法恰恰是成功的关键,所以不要太依赖工具,学会手工+工具相结合
-
你没有建立自己的测试流程:
-
漫无目的地抓包、改参,不如按照本文的通用方法论,一步步系统地测试每个功能点
-
你急于求成,缺乏耐心和细心:
-
越权漏洞往往藏在细微之处,比如一个看似无关的参数、一个被编码的ID、一个302跳转后的响应。只有足够细致,才能发现它们
免责声明:
本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。
任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。
本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我。
本文转载自:一个努力的学渣 一个努力的学渣 一个努力的学渣《访问控制篇之如何挖掘?》
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。









评论