本文内容仅用于技术研究与讨论,严禁用于任何非法用途。
在一次安全演练中,笔者遇到了一个颇具启发性的案例。整个过程围绕着对一套基于 Vue 开发的前端应用进行安全测试而展开,最终成功发现并利用了其后台接口的未授权访问漏洞。
目标发现与初步探查
与许多Web应用一样,本次测试通常以登录界面作为起点。目标系统展现了一个标准的登录窗口,输入账号、密码及验证码后方可进入。

通过指纹识别,初步判断该站点前端基于Vue.js构建。对于前后端分离的应用,测试重点往往会向API接口倾斜。在页面资源中寻找蛛丝马迹时,我们发现了一些可疑的接口路径。

列表中诸如 /dispatchable/chuexamine、/dispatchable/list 等路径,从命名上看很可能对应后台管理功能。这类路径如果缺乏有效的访问控制,就可能存在未授权访问风险。
工具辅助:挖掘Vue路由
为了更系统地分析Vue应用的路由结构,我们使用了专门针对Vue的辅助工具 Vue Crack。这款工具能够自动识别Vue应用,并解析其路由配置,有时能暴露出一些未在页面明显位置展示的路径。
工具地址:https://github.com/Ad1euDa1e/VueCrack

通过工具,我们获得了应用的所有前端路由,例如 /#/home、/#/dataManage、/#/dataView 等。我们随机选取了其中一个数据管理相关的路由(如 /#/dataManage)直接进行访问。
突破点:前端路由的未授权访问
令人意外的是,在没有登录的情况下,我们竟然直接进入了数据管理页面。这说明该前端路由本身未设置有效的路由守卫进行权限校验。

更关键的是,页面上的功能点似乎同样缺乏鉴权。我们尝试点击了“查询”按钮,系统竟然直接返回了查询结果,列表显示了大量的数据记录,总量达数千条。

这强烈暗示着,不仅仅是前端路由,其后端接口可能也存在严重的未授权访问问题。一个功能点无鉴权,往往意味着整个系统的权限控制体系可能存在缺陷。
深入分析:定位后端API接口
既然存在未授权访问的前端功能,其调用的后端接口自然是下一步的测试重点。我们重新审视页面源码,通过开发者工具进行搜索。
在源代码中,我们发现了明确的API调用证据。一段JavaScript代码清晰地展示了多个以 X.post 方法发起的请求,其URL均指向 /api 路径下的各个端点,例如 /api/company/list、/api/ble/list 等。

这里有一个重要细节:所有后端接口都统一使用了 /api 作为前缀。这是前后端分离架构中常见的路由前缀挂载机制。因此,在实际测试接口时,必须确保URL路径的完整性。
为了验证,我们抓取了之前点击查询功能时发出的网络请求。

抓包证实,请求确实发往 /api/examine-mobile/list,方式为POST。这为我们后续的接口模糊测试提供了准确的模板和基础URL。
漏洞利用:大规模未授权数据泄露
基于已发现的接口规律,我们构造了一个简单的字典,对 /api/ 前缀下的其他疑似接口(如之前源码中看到的 company/list、ble/list 等)进行模糊测试。

测试结果显示,大量接口在未授权状态下返回了200状态码和有效数据,证实了大规模的接口未授权访问漏洞。
在测试过程中,我们还发现了一个更有趣的细节。回到最初的 /api/examine-mobile/list 查询接口,其原始请求包携带了诸如 page、size 等分页参数。

当我们尝试“精简”这个请求,将所有这些参数全部删除,只保留最基本的POST请求体和 /api/examine-mobile/list 路径时,意想不到的情况发生了。

接口没有报错,反而返回了远超单页数量的数据——一次性泄露了超过18万条完整记录。这很可能是因为后端接口在处理请求时,默认参数失效或逻辑缺陷,导致在没有分页限制的情况下输出了全部数据。
总结与反思
本次测试案例清晰地展示了一个由前端Vue路由守卫缺失,延伸到后端API接口全面鉴权失效的完整漏洞链。攻击者无需任何凭证,即可遍历前端页面,并直接调用后端接口,甚至通过操纵请求参数获取远超预期的海量敏感数据。
这类漏洞的危害性极大,它不再是单一功能点的沦陷,而是整个业务数据面对未授权访问的“裸奔”。对于开发人员而言,必须在前后端均实施严格、统一的权限校验机制。前端路由守卫不能替代后端的接口鉴权,二者需要协同工作,构成纵深防御体系。
对于安全研究人员而言,在 渗透测试 中,对现代前后端分离应用(尤其是Vue、React等框架)的测试思路需要与时俱进。除了关注传统的SQL注入、XSS等漏洞,更应深入理解其架构特点,从路由、接口、状态管理等多个维度寻找安全突破口。欢迎在 云栈社区 与更多开发者交流Web安全防护的最佳实践。