Shikata Ga Nai

Private? There is no such things.

LAB: DOMベースXSS – `innerHTML`シンクとlocation.searchソースの利用

Hello there, ('ω')ノ

🔬 脆弱性の概要

このラボでは、検索機能の中でDOMベースのクロスサイトスクリプティング(XSS)脆弱性があります。具体的には、次のような流れです:

  • ブラウザのURLクエリパラメータ(location.search)から値を取得
  • それをそのままdiv.innerHTMLに代入
  • 結果として、HTMLが直接ブラウザに挿入され、悪意あるコードが実行される可能性

🧪 攻撃手順(PoC)

検索ボックスに以下のペイロードを入力して送信します:

<img src=1 onerror=alert(1)>

✅ 解説:

  • src=1 → 存在しない画像URLのため、読み込み失敗
  • onerror=alert(1) → エラー発生時にアラート実行
  • innerHTML による代入のため、イベントハンドラが有効になり、スクリプトが実行されます

💡 補足:なぜこれが効くのか?

HTML要素の属性(ここではonerror)にJavaScriptを埋め込むと、ブラウザはそれをイベントハンドラとして解釈し、条件に応じて実行します。innerHTML はこれらの属性をそのまま反映させるため、XSSが成立します。


✅ ラボのゴール達成条件

  • alert()が実行され、ダイアログが表示されれば成功です。

Best regards, (^^ゞ