Shikata Ga Nai

Private? There is no such things.

WebSocketメッセージのリプレイと生成による脆弱性診断

Hello there, ('ω')ノ

🧪 1. リプレイ(再送信)の基本手順

  1. Burp ProxyのWebSocket履歴を確認

    • Webアプリで操作を行い、Burpの [Proxy] → [WebSockets] タブで送受信されたメッセージを確認。
  2. 対象のメッセージを選択して右クリック →「Send to Repeater」

  3. [Repeater]タブに切り替えて内容を確認

    • メッセージの構造を編集可能。JSON形式などで送信データが整理されていることが多い。
  4. 「Send」ボタンでメッセージを再送信

    • サーバー側のレスポンスが下部に表示され、挙動が確認できる。

✍️ 2. メッセージの編集・新規生成

  • 任意のメッセージを編集して再送信

    • たとえば、「user_id」や「amount」などの値を不正に変更して送信し、権限昇格や金額改ざんなどが可能かを確認。
  • 新しいメッセージの作成と送信

    • 空欄に自分でメッセージを入力し、「To server」または「To client」を選択して送信。
    • 通常、攻撃対象は「サーバー」なので「To server」が中心。

📜 3. 履歴と再編集の活用

  • Repeater内の「History」パネルでは、これまで送受信したメッセージ履歴を確認可能
  • 任意の履歴項目を右クリック →「Edit and resend」で再編集可能

💡診断のコツ

  • 頻繁に出現するIDや数値フィールドを注視

    • {"action":"delete","user_id":2} などは、user_idの書き換えで他人のデータ削除を試みられる可能性がある。
  • サーバーのレスポンスを注意深く確認

    • ステータスコードやエラーメッセージ、成功メッセージの変化から挙動を判断。
  • ステートレスな操作は再送信による意図しない動作を引き起こす可能性あり

    • 例:支払い完了処理が再送信で二重決済される等

✅ まとめ

Burp SuiteのRepeater機能は、WebSocket通信の振る舞いを完全にコントロールする強力な武器です。再送信や編集、新規メッセージ生成を通して、通常の操作では発見しづらい脆弱性を発見できるため、積極的に活用しましょう。

Best regards, (^^ゞ