找回密码
立即注册
搜索
热搜: Java Python Linux Go
发回帖 发新帖

2152

积分

0

好友

308

主题
发表于 6 天前 | 查看: 18| 回复: 0

本文将以一次真实的医疗系统渗透项目为例,详细拆解如何从一个前端登录框开始,通过系统的信息收集、接口测试与逻辑分析,最终突破防线进入管理员后台的全过程。整个思路连贯,操作细致,无论是对漏洞挖掘入门的新手,还是对登录框测试感到无从下手的同仁,都希望能带来一些启发。

信息收集与前台功能分析

开局只有一个登录框。通过观察域名中的 # 符号,并借助 Wappalyzer 浏览器插件,可以识别出这是一个使用 Vue.js 构建的前端站点,并且使用了经典的 Webpack 打包器。

使用Wappalyzer插件识别网站技术栈

面对这种情况,在功能点测试之外,前期可以尝试的渗透测试思路主要包括以下几点,基本上是逐一尝试,目标明确:主线是进入管理员后台,支线则是发现信息泄露或其他高危漏洞。

  1. 常规接口未授权访问测试
  2. 利用哈希路由或插件(如VueCrack)主动拼接页面,尝试触发后端接口
  3. 收集全量的异步JS(chunk文件),通过正则脚本提取隐藏接口

对登录功能进行简单测试,发现系统存在用户名枚举漏洞(返回提示并非简单的“账号或密码错误”)。既然 admin 用户存在,便使用小字典在后台进行密码爆破。TOP3000 字典未命中,考虑到 admin 用户可能只是系统预设并未实际投入使用(实践中管理员常会新建独立账号),更复杂的字典意义不大,但弱口令测试作为常规步骤仍需保留。

使用Burp Suite进行登录爆破测试

尝试使用单双引号、万能密码等进行注入测试,均无回显,属于正常情况。于是快速转入接口测试阶段。通过测试发现,前端功能点调用的后端地址是一个新的域名 (api-xxxxxx.com),这符合前后端分离的架构。后续所有的接口拼接测试,都需要基于这个实际提供服务的后端域名进行。

未授权接口测试

通过插件捕获到大量完整的、带有斜杠 / 的绝对路径API接口。结合之前的发现:前端页面在 a.com,后端服务在 b.com。因此,我们的接口测试需要针对 b.com 这个域名展开。

捕获到的API绝对路径接口列表

接口的拼接测试往往有章可循。如果站点鉴权存在缺陷,第一轮简单的 GET 请求拼接就可能暴露出大量未授权信息。再利用这些泄露信息中的蛛丝马迹,如账户、工号特征,构造用户名清单进行密码喷洒,是常见的突破手段。再不济,也可能发现 export 这类导出接口,直接获取业务数据。


然而,对插件提取的接口进行第一次 GET 请求拼接,全部返回登录页面或无响应。前台功能测试确定不存在前置目录,且部分接口返回状态码 500,提示“请先登录”。这个响应恰恰证明了接口路径是正确的,只是被鉴权拦截了。

GET XXXXXXXXXX

GET请求拼接被鉴权拦截

尝试 POST 请求模式效果更差,所有请求都被 500 状态码拦截,无一返回有效信息。后续对接口进行简单的 Fuzz 测试也一无所获。虽然本次在提供服务的后端域名 (b.com) 上未获成功,但在实战中,对前端展示域名 (a.com) 的测试也绝不能遗漏。

POST xxxxxx

Content-Type: application/json

{}

POST请求同样被鉴权拦截

哈希路由页面测试

第一个方案(常规接口拼接)未能奏效,转而利用 VueCrack 等工具或手动尝试访问哈希路由页面 (# 后路径),目的是触发其他功能接口,观察是否有新的信息泄露。此时需要耐心逐个访问,并开启Burp Suite记录所有产生的流量。

手动访问哈希路由页面

当跳转到具体功能页面(如用户管理)时,就像正常测试功能点一样,尝试输入查询值,观察是否会有接口被调用。对于导入导出等功能,可以测试文件上传、SSRF等漏洞。

#/userAccount

访问用户管理页面

搜索功能处可测试SQL注入,尤其当出现排序选项时,不要忘记经典的 order by 注入测试。尝试跳转了几个路由页面,均无法成功调用后台接口,此路暂时不通。

/#/SpManagement

访问其他管理页面

柳暗花明的是,在调整到注册页面 (/#/register) 时,发现可以成功调用注册功能。提交注册请求后,服务器返回了有效的 JWT (Json Web Token),这意味着我们成功注册了一个低权限账号。

系统注册页面

成功注册返回JWT令牌

但是,使用这个刚注册的账号密码去登录系统却失败了,系统提示“部门错误”,说明账号权限仍受限制。不过,成功注册获得的 JWT 相当于我们已经有了一个“身份凭证”。接下来,可以携带这个未被系统完全“认可”的 JWT 去重新测试之前的接口,检验是否存在越权访问。

使用注册账号登录被拒绝

利用低权限JWT进行接口测试

携带这个低权限 JWT 重新对接口进行 GET 请求测试,发现了一个突破口:/student/export 接口返回了数百条学生敏感信息。而 POST 请求依然收获不大。此时,可以对 student 这个关键词进行 Fuzz,尝试发现如 teacher 等其他角色的类似接口。

GET /student/export

携带JWT后成功访问学生信息导出接口

学生导出接口响应成功

导出的学生敏感数据表格

手工替换参数进行测试,将 student 改为 teacher,顺利获取了系统全部教职工信息。表格中再次出现了工号字段,这为后续爆破进入教师个人后台提供了条件。

/teacher/export ------>老师列表
/student/export -------> 学生列表

成功访问教师信息导出接口

导出的教职工信息表格

发现并利用页码参数

仅有注册获得的 JWT 进行接口测试,只发现了部分信息泄露。除了利用泄露的工号进行爆破外,似乎没有更直接的路径进入管理员后台。但直觉和经验表明,这个站点应该存在更深层次的漏洞。重新分析Burp Suite记录的所有流量,经过细致排查,发现了一个关键点:部分接口请求中携带了页码参数 pageNumpageSize

这是用于分页查询的常见参数。在过往经验中,我曾利用页面功能在已有数据基础上获取更多数据。那么,是否可以主动在接口测试中模仿并添加这些参数呢?

发现接口请求中的页码参数


尝试在接口后拼接 ?pageNum=1&pageSize=99 参数再次测试。结果令人振奋:信息泄露量远超第一次!这证实了该思路的可行性。其中,/plan/task/manager/list/export 接口泄露了超过3000条包含身份证号、手机号的敏感信息。

/plan/task/manager/list/export?pageNum=1&pageSize=99 # 泄露3k+二要素

携带页码参数后访问接口

泄露的大量敏感数据

此外,/online/card/manage/list 接口的返回数据显示了全国各地不同的职业院校列表,结合系统内的学生和老师信息,可以推断该系统的受众是医学院的实习学生。

/online/card/manage/list?pageNum=1&pageSize=99 # 校园列表

泄露的职业院校列表数据

至此,攻击面大大拓宽:系统用户(学生、老师)的账号极大概率是手机号。随机选取泄露信息中的手机号作为账号测试登录,系统反馈“密码不正确”,这属于典型的用户名枚举漏洞。现在,我们掌握了大量真实用户的账号,其中必然存在使用弱口令的情况,通过密码喷洒攻击进入用户后台只是时间问题。

挖掘相对路径接口

除了发现页码参数,在逐行审查数据包时,还注意到了一个被常见插件“遗漏”的接口模式:/role/register。插件通常能很好地捕获以 / 开头的绝对路径,但对于 role/register 这种缺少开头斜杠的相对路径,则可能归类到“相对路径”模块,容易被忽略。

/role/register

发现相对路径接口的请求

将捕获的接口统一整理到文本中后,全局搜索 /role/register,发现它确实不在之前使用的插件检索结果里。那么这个接口从何而来?

在整理文本中搜索特定接口

回到浏览器开发者工具的“Network”面板全局搜索,发现这个接口的原始形态就是 role/register。正是因为缺少开头的 /,插件将其识别为相对路径并归类。实际上,插件也捕获到了这类接口,只是存放的位置不同。

role/register

在浏览器开发者工具中搜索接口来源

查看插件的“相对路径”模块,果然存在一千多个此类接口。现在,我们手握低权限 JWT,再加上刚发现的页码参数技巧,对这些相对路径接口进行测试,很可能会有新的收获。即使没有手动发现这个细节,按照常规流程,在插件提取的接口测试完毕后,下一步也应是收集所有异步JS文件并通过脚本批量提取接口,届时同样会发现它们。

插件中捕获的大量相对路径接口

针对相对路径接口进行测试时,需要在路径前手动添加 /,然后携带 JWT 和页码参数进行请求。

GET  /**xxxxxxx**?pageNum=1&pageSize=99

对相对路径接口进行爆破测试的设置

测试结果揭示了系统内部更大量的信息泄露,包括内部资源、人员列表、医学课题研究文档等,危害显著。

泄露的内部人员信息列表

泄露的人员信息详情

可下载的医学课题研究文档列表

泄露的课题研究文档详情

新的敏感信息泄露数据

在翻查这些泄露的接口数据时,发现了管理员账号 (m01)。采用经典的突破思路——弱口令测试,使用简单密码 abc123 成功登录管理员后台。

m01/abc123

在泄露信息中发现管理员账号

使用弱口令成功登录管理员后台

成功进入的管理员后台界面

总结

本次渗透测试过程步骤清晰,逻辑连贯,完整展示了一次从零开始突破登录框的实战思路。核心在于通过细致的信息收集(技术栈识别、接口捕获)、灵活的测试技巧(参数拼接、路由遍历)以及对业务逻辑的深度分析(从数据推断用户体系、发现鉴权缺陷),最终组合利用泄露信息(手机号、工号)进行精准的密码喷洒攻击,成功获取系统最高权限。

文章看似顺利,实则是将许多尝试与“踩坑”过程进行了提炼。安全测试的本质是耐心与思维的结合,希望这次分享能为大家提供一些有益的参考。

文章转自先知社区,原作者一天要喝八杯水,侵删。原文链接:https://forum.butian.net/share/4644




上一篇:Fscan内网综合扫描工具使用详解:红队高效渗透与资产发现指南
下一篇:男孩Kubernetes全栈部署实战课程 从集群搭建到微服务监控一站式掌握
您需要登录后才可以回帖 登录 | 立即注册

手机版|小黑屋|网站地图|云栈社区 ( 苏ICP备2022046150号-2 )

GMT+8, 2026-1-10 18:25 , Processed in 0.356518 second(s), 40 queries , Gzip On.

Powered by Discuz! X3.5

© 2025-2025 云栈社区.

快速回复 返回顶部 返回列表