Hello there, ('ω')ノ
✅ WebSocket「接続」の操作とは?
通常のセキュリティ診断では、WebSocketのメッセージ(データ)を中心に改変しますが、
そもそも接続時のリクエスト(ハンドシェイク)を操作することで、より深い攻撃や調査が可能になるケースもあります。
🧠 なぜWebSocket接続(ハンドシェイク)を操作するのか?
シナリオ | 説明 |
---|---|
攻撃範囲の拡大 | 通常では接続できないWebSocketエンドポイントにアクセスできるようになる |
接続再構築 | 一部の攻撃では接続が切れるため、再接続が必要 |
トークンの更新 | 認証用トークン(JWTなど)が期限切れになると再接続が必要 |
🌐 WebSocketの接続の仕組み(ハンドシェイク)
WebSocket接続は、次のようなHTTPリクエストから始まります:
GET /chat HTTP/1.1 Host: example.com Upgrade: websocket Connection: Upgrade Sec-WebSocket-Key: x3JJHMbDL1EzLkh9GBhXDw== Sec-WebSocket-Version: 13 Cookie: session=abc123; token=xyz456
この「ハンドシェイクリクエスト」を改変することで、以下が可能になります:
- Cookieの差し替え
- トークンの偽装
- ヘッダーの追加・削除
- パスやクエリの改変
🛠 Burpでの操作方法(ハンドシェイクの改変)
WebSocket接続が始まるタイミングを確認
- Burpの「Proxy」 > 「HTTP history」から、
Upgrade: websocket
を含むリクエストを探す
- Burpの「Proxy」 > 「HTTP history」から、
このリクエストを「Repeater」へ送信
- 右クリック > Send to Repeater
ヘッダーやクエリパラメータを自由に編集
- 例:
token=
を別の値に変更
- 例:
新たな接続を作成するために「Send」
- その後、該当するWebSocketメッセージを送る
🔍 応用テクニック
技術 | 説明 |
---|---|
クライアント切替 | トークンを変更して別ユーザーとして再接続 |
機能偽装 | 通常は非表示の機能にアクセスできるURLで接続を試す |
中間者攻撃の再現 | 不正なヘッダーで接続を再構築し、別のサーバーを経由させるテストなど |
✅ まとめ
WebSocketの「接続」部分を操作できると、より高度な診断や特殊な脆弱性検証が可能になります。
改変対象 | 影響 |
---|---|
Cookie / トークン | ユーザーの切り替え・期限切れ対策 |
URL / クエリ | 攻撃対象エンドポイントの変更 |
カスタムヘッダー | バックエンド動作の偽装やバイパス |
Best regards, (^^ゞ