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

2343

积分

0

好友

317

主题
发表于 1 小时前 | 查看: 1| 回复: 0

漏洞挖掘

测试的第一步自然是访问目标网站,同时留意页面源码(“熊猫头”)中是否存在信息泄露。这次很凑巧,泄露的是一段 JWT (JSON Web Token)。

JWT泄露信息截图

拿到 JWT 后,接下来就是尝试拼接各种接口和路径进行访问。然而,大多数尝试最终都只返回了 401 Unauthorized 状态。

401响应截图

走到这一步,常规思路可能是爆破登录框或者 Fuzz 寻找未授权接口。这些尝试都一无所获后,我们决定回头进行更深入的信息收集。通过对 IP 进行资产测绘,发现该目标还存在其他旁站系统。

发现旁站资产

访问旁站并测试登录功能时,发现虽然系统界面不同,但部分接口路径看起来非常相似。于是,我们尝试将先前泄露的 JWT 令牌放入旁站系统的请求头中进行测试。

旁站接口请求截图

第一个系统和第二个系统的接口路径对比:
系统一接口路径
系统二接口路径

测试过程

在登录框中随意输入账号密码,抓取登录请求的数据包。将数据包放入重放模块进行构造,关键步骤是在请求的 Header 中加上 token: {发现的JWT}。在众多接口中,/platAccount/list 引起了我的兴趣,通过 F12 开发者工具查找该接口的调用参数。

F12查找list接口参数

按照找到的参数进行拼接访问,但提示缺少必要参数。此时,只需将 POST 请求 Body 中的参数(pageNumpageSize)移动到 URL 查询字符串中即可。修改后成功获取到用户列表数据,这证明这个 JWT 令牌在旁站系统是可用的。

请求参数错误提示
成功获取用户列表响应

此时我们已经获取到了账号相关信息,并且还发现了一个重置密码的接口 /platAccount/resetPwd。继续测试该接口,首先提示 “账号ID不能为空”。我们从刚才获取的用户信息中提取 platAccountId 字段填入,随后提示 “密码不能为空”。回想登录时使用的密码字段就是 password,补全后,重置密码操作成功。

重置密码接口路径
账号ID为空错误
密码为空错误
测试错误账号的响应
重置密码成功

接下来的目标自然是重置管理员(admin)的密码。操作成功后,使用新密码成功登录后台。

获取管理员账号信息
重置管理员密码请求
管理员后台界面

SQL注入

在后台其他功能点进行测试时,加入单引号后发现报错。仔细查看错误信息,发现是 Druid 连接池防火墙的报错。而 Druid 防火墙是可以通过报错函数进行注入的。这里使用的 payload/0 or updatexml(1,concat(0x7e,user(),0x7e),1)=1,成功获取到数据库用户名,同理也可以获取数据库名。

Druid SQL报错信息
SQL注入测试请求
SQL注入成功获取用户
SQL注入成功获取数据库名

XSS

由于该系统使用 Vue 框架,其内部存在一些默认的过滤机制。在 F12 查看页面元素时,看上去 XSS 代码已经写入了,但实际上已经被 Vue 转义处理了。

前端页面显示的XSS代码
开发者工具中查看元素
源码中被转义的字符

要绕过此类限制,通常需要寻找开发者误用 v-html 指令的地方,或者寻找富文本编辑器。编辑器通常是测试 XSS 最直接的地方,要么是上传 HTML 等文件,要么就是在编辑器内容中插入可执行的标签。

后台文章编辑界面

在编辑器的“内容”字段中插入 XSS payload <img src=1 onerror=alert(123)> 并提交。
携带XSS Payload的请求
成功触发 XSS 弹窗。
XSS弹窗成功

敏感信息泄露

现在很多网站通常不会直接接受文件存储在本地服务器,而是会放在云存储桶中。这虽然防止了一些直接的文件上传导致的代码执行漏洞,但如果权限配置不当,同样会在获取上传凭证时泄露相关的 Access KeySecret Key 以及临时的 STS Token。在上传文件功能点,发现返回的数据包中包含了 AK/SK 等敏感信息,使用 OBS Browser+ 成功接管其五十多个存储桶。

文件上传界面
返回包中的AKSK信息
OBS Browser+成功列出存储桶

由于现在是 admin 账户登录的,获取到的密钥权限可能较高。我们尝试将获取敏感信息接口请求中的 Token 替换回一开始泄露的那个主站 JWT,请求同样成功了。这意味着主站泄露的 JWT 在旁站拥有极高权限,这本身又是一个独立的漏洞点。

使用主站JWT成功获取AKSK

越权漏洞

在已经拿到后台权限的情况下,完全可以测试不同账号间的越权问题。直接使用后台功能重置一个普通用户的密码,然后用另一个浏览器登录该普通用户账号。

普通用户后台界面

可以看到该用户的权限菜单很少,但这并不代表其功能权限真的被严格限制了。有些网站只对前端显示的菜单进行权限校验,而不会在后台对每个功能点接口做二次鉴权。通过 F12 找到该普通用户的 token 值,在 Burp Suite 中将之前 admintoken 替换成这个普通用户的 token。然后尝试访问之前的高危接口:获取 AKSK,成功;获取所有租户列表,同样成功。这证实了垂直越权漏洞的存在。

普通用户视角的产品管理页
浏览器开发者工具中的Token
使用低权限Token请求敏感接口
使用低权限Token成功获取用户列表

总结与反思

本次测试始于一个看似不起眼的 JWT 泄露,通过系统的信息收集,发现了同 IP 下的旁站。利用主站的 JWT 在旁站实现了越权登录,并进一步发现了重置密码、SQL 注入、存储型 XSS、敏感信息泄露以及垂直越权等多个漏洞。整个链条清晰地展示了:一个微小的信息泄露点,如何通过不安全的令牌共享机制和缺失的权限验证,演变为一次完整的系统渗透。

对于开发者而言,这起案例提醒我们:

  1. JWT 等令牌绝不能硬编码或泄露在前端。
  2. 不同系统间应使用独立的认证体系,或建立严格的令牌校验与权限边界。
  3. 后台接口必须进行严格的、基于角色和功能的权限校验,不能仅依赖前端菜单隐藏。
  4. 云服务凭证的发放应遵循最小权限原则,并妥善保管。

对于安全从业者来说,这充分体现了渗透测试中“由点及面”的思考方式。不放过任何一丝线索,将信息收集做深做透,往往就能打开新的突破口。如果你对这类实战案例的分析过程感兴趣,欢迎到云栈社区的【安全/渗透/逆向】板块,与更多同行交流探讨。




上一篇:Skills Desktop:Claude Code Skills 管理难题的实用工具分享
下一篇:Rust 实现的 Markdown 检查工具 rumdl:57 条规则一键自动修复
您需要登录后才可以回帖 登录 | 立即注册

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

GMT+8, 2026-3-20 15:21 , Processed in 0.508157 second(s), 41 queries , Gzip On.

Powered by Discuz! X3.5

© 2025-2026 云栈社区.

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