前言
国外白帽小哥在浏览网站和检查可用功能时,注意到一个指向同一组织内部域名的引用。
通过访问,发现了一个提供注册和登录功能的不同的 Web 应用程序。
通过登录请求抓包发现这并不是一个标准的 HTTP POST 请求,而是一个用于身份验证的 WebSocket 连接。
什么是 WebSocket?
WebSocket 是一种协议,它通过单个 TCP 连接在客户端和服务器之间提供持久、全双工通信。
它以 HTTP 握手开始,然后将连接升级为 WebSocket,允许双方随时发送数据而无需重新建立连接。
漏洞挖掘
在检查 WebSocket 登录请求时,白帽小哥发现一个名为 role 的参数,其值为 visitor。
这成功引起了白帽小哥的注意,于是他开始检查客户端 JavaScript 代码。
打开 main.js 文件,搜索关键词 visitor ,查看可能存在其它哪些角色,它显示了 role 参数的三个可能值:
- visitor
- manager
- admin
白帽小哥猜测 role 可能会受客户端控制,也许通过更改值能够实现权限提升。
但是 WebSocket 连接通常涉及很多动态请求,手动编辑效率低下,需要一个方法来自动拦截和修改 WebSocket 消息。
Burp Suite 支持专门针对 WebSocket 流量的匹配和替换规则。
小哥创建了一条规则,用于替换出站 WebSocket 消息中所有的 "role":"visitor" 为 "role":"admin" 。
然后使用一个普通用户账号登录,由于 role 参数的修改,小哥成功以管理员身份通过了身份验证。
漏洞使白帽小哥能够以普通用户( visitor )提升到 admin 权限账号,作为管理员权限,拥有了以下操作:
- 访问所有用户数据
- 删除用户
- 执行其它高权限管理操作
你学到了么?
原文:https://ro0od.medium.com/websocket-response-manipulation-leads-to-access-admin-panel-27b432ea4745