在某次安全演练中,记录下一个有趣的发现过程,主要涉及对Vue前端应用的路由与接口鉴权问题的测试。
开局面对的是一个登录框,通过指纹识别发现是Vue构建的应用,于是测试思路优先偏向于寻找和测试接口是否存在安全问题。

首先,在浏览器的开发者工具中寻找可能存在的有用接口。很快,发现了一段接口列表,从命名和路径上看,就隐约透露出未授权访问的可能。

接着,使用Vue Crack这款专门用于分析Vue Router的工具,来探查是否存在未授权即可访问的路径。这款工具使用非常方便,它能自动识别页面是否基于Vue构建,并尝试列出所有可能的路由路径。
下载地址:https://github.com/Ad1euDa1e/VueCrack

从工具列出的路径中随机选择一个(例如/#/dataView)直接访问,果然成功进入了系统界面。虽然当前页面可能没有显示具体数据,但我们可以点击页面上的各个功能按钮,测试这些功能点是否存在鉴权缺陷,同时也可以尝试SQL注入等测试。

简单地点击了页面上的“查询”功能,没想到直接查询成功并返回了大量数据。第一次遇到这种情况,多少有些意外。数据显示一页有十条记录,总页数超过四千页,这意味着背后有超过四万条数据暴露。

既然这一个功能点没有鉴权,那么很可能存在更多未授权访问的地方。于是,重新回到登录口,更仔细地审查前端源码。之前在findsomething中看到了单独的/api路径,结合这是一个典型的前后端分离架构,/api很可能就是后端接口的统一前缀。因此,直接在前端源码中搜索“api”关键字,寻找更多关联的接口。

果然有发现。代码中清晰地定义了一系列以post方法调用的API,其中不少以list结尾。如果能成功调用这些接口,估计也能获取不少数据。但这里需要注意一个关键点:不能直接拿这些接口路径去访问,前面必须加上/api前缀。因为在之前的抓包测试中,发现每个请求接口前都带有/api,这是由于后端路由的统一前缀挂载机制。所有后端接口均被统一绑定到 /api 路径下,因此实际调用时必须携带此前缀。
为了验证,直接对刚才页面上的查询功能进行抓包。

随后,对从源码中提取出的接口列表进行了一轮Fuzz测试。前面的几个接口基本上都能返回数据,这里不做逐一展示。

接下来是一个特别有意思的发现。还是回到刚才那个查询功能的数据包,其返回的数据与前端页面展示的一致。数据包底部包含一些请求参数(如分页参数),这些参数控制了返回数据的范围和数量。
但神奇的是,当我尝试对这个接口进行Fuzz,并删除了所有请求参数后发送请求,它竟然返回了全新的、体量极其庞大的数据集,这与带参数请求时的结果完全不同。

将上述所有参数删除后,再次发送请求,接口竟然返回了超过十八万条数据。这个结果完全出乎意料,也暴露出后端接口在处理参数缺失情况下的逻辑缺陷,可能导致了全表数据泄露。这种在渗透测试中由参数处理不当引发的信息泄露案例,值得深入分析和警惕。

本次案例展示了在针对现代前端框架(如Vue)应用进行安全测试时,除了常规的漏洞挖掘,更需要关注其路由机制、接口鉴权逻辑以及参数处理边界情况,往往能在不经意间发现严重的安全隐患。更多安全技术实战讨论,欢迎访问云栈社区进行交流。
|