WebSocat 安装与使用
WebSocat 是一款“支持 WebSocket 协议的 netcat”,体积小、零依赖、一条命令即可把任意 TCP/STDIO 流桥接到 ws/wss,也能把 WebSocket 服务转成 TCP/Unix 套接字,是渗透测试、红队、IoT 调试、前端抓包、内网穿透等场景的瑞士军刀。
本文以 Kali Linux x86_64 为例,手把手带你完成“下载 → 安装 → 常用用法 → 进阶技巧”全流程;其他 Linux 发行版只需替换二进制文件名即可照搬。
一、1 分钟完成安装(零依赖静态版)
-
拿到官方最新静态二进制(musl 链接,无 glibc 版本烦恼)
版本:v1.14.0(2024-09)
地址:https://github.com/vi/websocat/releases/download/v1.14.0/websocat.x86_64-unknown-linux-musl -
一行命令下载并放入全局路径
sudo wget -qO /usr/local/bin/websocat \https://github.com/vi/websocat/releases/download/v1.14.0/websocat.x86_64-unknown-linux-musl \&& sudo chmod +x /usr/local/bin/websocat
- 验证
websocat --version
# 输出:websocat 1.14.0
至此安装完毕,无需 apt、无需 cargo、无需 root 运行,可执行文件仅 3 M 左右。
二、5 条命令掌握 80% 使用场景
目的 | 命令示例 |
---|---|
1. 测试公网回显服务 | websocat ws://ws.vi-server.org/mirror |
2. 连接自建 WebSocket 服务 | websocat ws://127.0.0.1:8080/ws |
3. 发送一条消息即退出 | `echo ‘{“msg”:“hi”}’ |
4. 把 WebSocket 转成本地 TCP,供旧工具使用 | websocat tcp-l:127.0.0.1:9000 wss://target.com/socket |
5. 本地快速起一个 WebSocket 回显服务器 | websocat -s 0.0.0.0:1234 |
三、渗透测试常用技巧
- 绕过前端,直接和 WebSocket API 交互
拿到 JWT 后:
Authorization='Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9...'
websocat -H="Authorization: $Authorization" wss://api.site.com/live
- 把 WebSocket 流进 nc/hexdump 分析
websocat wss://target.com/log | hexdump -C
- 与 Burp 联动(Burp 不支持原生 WS 转发时)
在 Burp 上游选项里设置 SOCKS 代理,然后:
websocat -s 127.0.0.1:8086 wss://target.com/socket
浏览器插件 SwitchyOmega 指向 ws://127.0.0.1:8086
即可。
- 内网穿透——把内网 WebSocket 映射到公网 VPS
本地(内网主机)
websocat wss://your-vps.com:443 tcp:127.0.0.1:3389
VPS(公网)
websocat -s 0.0.0.0:443 ssl:cert.pem:key.pem tcp:127.0.0.1:9999
此时攻击机连 wss://your-vps.com:443
就等于连到内网 3389。
四、命令行速查表
参数 | 说明 |
---|---|
-s IP:PORT | 监听 WebSocket 服务器(明文) |
-s IP:PORT ssl:cert:key | 监听 WSS 服务器 |
tcp-l:IP:PORT | 监听 TCP 端口 |
tcp:IP:PORT | 连接 TCP 端口 |
stdio: | 标准输入输出,可省略 |
-H="Header: value" | 添加自定义 HTTP 头 |
-v | 详细调试,排查握手问题 |
--binary / --text | 强制二进制或文本帧 |
--exit-on-eof | 收到 EOF 立即退出,适合脚本 |
五、常见问题 FAQ
Q1: 执行报错 cannot execute binary file
?
→ 下错架构,请 uname -m
确认是 x86_64 还是 aarch64,再对应下载。
Q2: 提示 SSL certificate verify failed
?
→ 测试环境可加 -k
忽略校验(等同 curl -k):
websocat -k wss://self-signed.site.com/socket
Q3: 需要 socks5 代理?
→ 用 proxy-connect
插件:
websocat -s 127.0.0.1:9000 socks5://127.0.0.1:1080 wss://target.com/socket
六、结语
WebSocat 把“TCP 世界的祖传工具”与“WebSocket 新世界”无缝黏合:
一条命令即可让 nc、telnet、burp、nmap、sqlmap、metasploit 等老牌工具瞬间获得 ws/wss 能力,也能让 浏览器、小程序、IoT 固件 快速对接传统 TCP 服务。