以下の内容はhttps://cysec148.hatenablog.com/entry/2025/09/09/161750より取得しました。


LAB: DOM Clobbering を使った HTML フィルター回避 — “どう考え、何を試し、何を観察するか”を完全ガイド

Hello there, ('ω')ノ

目的:HTML フィルター(HTMLJanitor)の抜け穴を DOM Clobbering で突き、print() を実行させる。 想定ブラウザ:Chrome 推奨(この手法は Firefox では想定通り動かないことがある)


全体の進め方(非エンジニア向けの道筋)

  1. まず観察:コメントに危険な属性やタグを書いてみて、何が消されるか確認
  2. 仮説を立てる:「ライブラリが DOM の attributes などのプロパティに頼っているかも」
  3. 最小の実験id="attributes" の要素を混ぜて “上書き(clobber)” が起きるかを検証
  4. 発火方法の設計onfocus を自動で発火させる(#x ハッシュ+tabindex
  5. 自動化:Exploit Server の iframe でページ読み込み後に自動フォーカスさせる

この 1→5 を順番に進めれば、「なぜそう分かったか/どう試して確信したか」が自然と理解できます。


フェーズA:まず“何がフィルターで消えるか”を観察する

何を試す?

  • コメント欄に代表的な危険要素を入れて保存し、**表示結果(実際のDOM)**を開発者ツールで確認します。

    • 例1:<script>alert(1)</script> → たぶん丸ごと消える
    • 例2:<img src=x onerror=print()>onerror が消える
    • 例3:<a href="javascript:print()">click</a>href="javascript:..."消える or 置換される
    • 例4:<form onfocus=print()>onfocus が消える

ここでの見方・考え方

  • 危険な“イベント属性”が削除されることを確認できれば、“属性レベルのサニタイズ” が行われていると分かる
  • 多くのフィルターは内部で element.attributes(要素の属性一覧)を用いてチェックします → ここが DOM Clobbering の狙い目 になりやすい

フェーズB:DOM Clobbering(上書き)が効くかを検証

何を試す?

この続きはcodocで購入



以上の内容はhttps://cysec148.hatenablog.com/entry/2025/09/09/161750より取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14