Shikata Ga Nai

Private? There is no such things.

LAB: WebSocketメッセージの改ざんによるXSS脆弱性の悪用

Hello there, ('ω')ノ

🎯 目的

このラボでは、WebSocketを利用したライブチャット機能に存在するXSS(クロスサイトスクリプティング)脆弱性を突いて、サポートエージェントのブラウザ上でalert()ダイアログを表示させることを目指します。


🛠️ 攻略手順

1. ライブチャット機能の確認

  • ラボのページで「Live chat」をクリックし、任意のメッセージを送信します。
  • Burp Suiteの「Proxy」>「WebSockets history」タブで、送信されたメッセージがWebSocketを通じて送信されていることを確認します。

2. クライアント側のエンコードの確認

  • ブラウザから「<」などの特殊文字を含むメッセージを送信し、Burp Suiteでそのメッセージを確認します。
  • 送信されたメッセージ内で「<」が「<」のようにHTMLエンコードされていることを確認します。

3. WebSocketメッセージの改ざん

  • Burp SuiteでWebSocketメッセージのインターセプトを有効にします。

  • 再度、任意のメッセージを送信し、Burp Suiteでそのメッセージをインターセプトします。

  • インターセプトしたメッセージの内容を以下のように編集します:

  {"message":"<img src=1 onerror='alert(1)'>"}
  • 編集後、メッセージを送信(Forward)します。

4. 結果の確認

  • 自身のブラウザ上でalert(1)のダイアログが表示されることを確認します。
  • 同様に、サポートエージェントのブラウザ上でもダイアログが表示され、ラボが解決されたことを確認します。

💡 ポイントと注意点

  • クライアント側のエンコード:通常、ブラウザから送信されるメッセージはHTMLエンコードされますが、Burp Suiteを使用して直接WebSocketメッセージを編集することで、エンコードを回避できます。
  • XSSペイロードの構造<img>タグのonerror属性を利用することで、画像の読み込みエラー時にJavaScriptコードを実行させることができます。
  • サポートエージェントの視点:この攻撃は、他のユーザー(この場合はサポートエージェント)のブラウザ上でスクリプトを実行させることを目的としています。

🧠 まとめ

  • WebSocket通信においても、適切な入力検証やサニタイズが行われていない場合、XSS攻撃が可能となります。
  • Burp Suiteを活用することで、WebSocketメッセージの改ざんや再送信が容易に行え、脆弱性の検証が効率的に進められます。
  • このラボを通じて、WebSocketに関連するセキュリティリスクとその検証手法を学ぶことができます。

Best regards, (^^ゞ