SuperAPI AI 工具集

hunt-websocket

通用与其它

查看项目

更新于 10-16 03:04

技能介绍

用途:对目标应用的 WebSocket 接口进行安全测试,覆盖 CSWSH(跨站 WebSocket 劫持)、握手 Origin 校验缺失、逐消息鉴权缺失、消息篡改、socket.io/SignalR/Phoenix 的命名空间与房间越权,以及握手层 Upgrade 走私。

主要能力与流程: 阶段1 发现端点:从 JS 中 grep new WebSocket、io()、socket.io、SockJS、SignalR、Phoenix.Socket、wss?:// 等;用 curl 探测 101 升级;用 curl 请求 /socket.io/?EIO=4&transport=polling 获取版本与 sid;用 nmap 扫描常见 WS 端口。Burp Pro 可用 get_proxy_websocket_history 枚举实时套接字、消息结构和携带敏感数据的帧。 阶段2 CSWSH:需同时满足握手使用环境凭据(Cookie 自动发送)、握手无不可预测的每连接令牌、服务端不校验 Origin;用 wscat 带 Origin: https://evil.com 探测仅算信号,须在攻击者源托管 PoC 页面并在浏览器中登录另一受害者账号,收到受害者数据并用 OAST/Collaborator 带外证明才算确认。 阶段3 消息级鉴权:握手鉴权不等于逐消息鉴权,用无 Cookie 或低权限会话发送 getUserData、getAdminPanel、deleteUser、getSecretConfig 等特权动作,需产生可验证的服务端效果。 阶段4 消息篡改:在 Burp WebSockets 历史中拦截修改 price、amount、userId、orderTotal 等,并通过 REST/订单接口确认篡改在服务端持久生效。 阶段5 命名空间/房间越权:socket.io 通过 Engine.IO 报文(40/admin, 加入命名空间,42 发送事件)测试;SignalR 通过 /<hub>/negotiate 后测试方法级鉴权;Phoenix Channels 测试 phx_join 的 join/3 是否授权。 阶段6 握手层 Upgrade 走私:WebSocket 建立后帧不会被代理当 HTTP 重解析,走私发生在握手之前;用 Burp Repeater 或 HTTP Request Smuggler 逐个变量测试(如 Sec-WebSocket-Version: 777 与代理行为差异),以时序/差分探针加 OAST 证明脱同步与实际影响。 阶段7 socket.io 细节:命名空间是协议消息而非 URL 参数(nsp 会被忽略,实际连到根命名空间),并用伪造/重放 sid 测试会话固定或劫持。

工具:npm install -g wscat、brew install websocat、Burp Suite Pro(WebSockets history、HTTP Request Smuggler、Collaborator)及 Burp MCP 相关接口。

限制与验证要求:仅 101 响应、帧被接受但无效果、自我回显、连接成功但空的命名空间均不构成发现;须有跨账号或带外证明。资料中未提供官方来源、许可、价格、依赖版本与平台支持等事实,暂未提供。