访问控制篇之如何挖掘?

admin 2026-03-18 19:32:08 网络安全文章 来源:ZONE.CI 全球网 0 阅读模式

文章总结: 文档系统阐述了未授权访问、水平越权与垂直越权三类访问控制漏洞的定义与区别,提供了从信息收集到响应分析的通用挖掘流程。文章详细列举了针对各类漏洞的具体测试步骤、关注场景与实战技巧,并剖析了挖掘失败的主观原因,强调实践、JS分析与发散思维的重要性,具有较强的实战指导价值。 综合评分: 87 文章分类: WEB安全,渗透测试,漏洞分析,实战经验


cover_image

访问控制篇之如何挖掘?

原创

一个努力的学渣 一个努力的学渣

一个努力的学渣

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跳转后的响应。只有足够细致,才能发现它们


免责声明:

本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。

任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。

本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我

本文转载自:一个努力的学渣 一个努力的学渣 一个努力的学渣《访问控制篇之如何挖掘?》

    访问控制篇之如何挖掘? 网络安全文章

    访问控制篇之如何挖掘?

    文章总结: 文档系统阐述了未授权访问、水平越权与垂直越权三类访问控制漏洞的定义与区别,提供了从信息收集到响应分析的通用挖掘流程。文章详细列举了针对各类漏洞的具体
    评论:0   参与:  0