Iframe Traps

Tip

AWSハッキングを学び、実践する:HackTricks Training AWS Red Team Expert (ARTE)
GCPハッキングを学び、実践する:HackTricks Training GCP Red Team Expert (GRTE) Azureハッキングを学び、実践する:HackTricks Training Azure Red Team Expert (AzRTE)

HackTricksをサポートする

基本情報

この、iframeを介したXSSの悪用により、ユーザーがウェブページ内を移動する際の情報を盗む手法は、元々trustedsec.comの次の2つの投稿で公開されました: here and here

攻撃はXSSに脆弱なページから始まり、攻撃者がウェブアプリ全体を占有するiframe内でvictimsを移動させることで、victimsがXSS領域を離れないようにすることが可能になります。

XSS攻撃は基本的にウェブページを画面全体(100%)のiframeにロードします。したがって、victimはiframeの中にいることに気づかないでしょう。さらに、victimがiframe内のリンクをクリックしてページを移動すると(ウェブ内で)、任意のJSがロードされた状態でiframe内を移動することになり、この移動から情報が盗まれます。

さらに現実味を出すために、iframeがページのlocationを変更したときに検出するためのlistenersを使い、ユーザーがブラウザを使ってページを移動していると誤認する位置でブラウザのURLを更新することが可能です。

https://www.trustedsec.com/wp-content/uploads/2022/04/regEvents.png

https://www.trustedsec.com/wp-content/uploads/2022/04/fakeAddress-1.png

また、listenersを使って盗めるのは被害者が訪れている他のページだけではなく、filled formsに入力されたデータを取得して送信したり(資格情報など)、steal the local storageすることも可能です。

もちろん、主な制約はvictim closing the tab or putting another URL in the browser will escape the iframeという点です。別の回避手段としてはrefresh the pageがありますが、これは部分的にpreventedすることができます。具体的には、iframe内で新しいページが読み込まれるたびに右クリックのコンテキストメニューを無効化したり、ユーザーのマウスがiframeを離れたことを検出してブラウザの再読み込みボタンをクリックしようとしている可能性を察知すると、ブラウザのURLがXSS脆弱な元のURLに戻され、ユーザーが再読み込みすると再び汚染されます(ただし、これはあまりステルスではありません)。

モダンなトラップ (2024+)

  • 実際のナビゲーションを模倣するためにfull‑viewport iframeとHistory/Navigation APIを使用する。
Full-viewport iframe trap ```html ```
  • Navigation API (navigation.navigate, currententrychange) は外側のURLバーを同期させ、実際のURLをleakingすることなく維持します。
  • Go fullscreen にしてブラウザのUIを隠し、自分の偽のアドレスバー/鍵アイコンを描画します。

オーバーレイ & スキマーの使用

  • 侵害されたマーチャントは、ホストされた決済iframe(Stripe、Adyen など)を pixel‑perfect overlay に置き換え、実際のフレームは下に残したままキーストロークを中継します。フローが途切れないようレガシーな検証APIを使うこともあります。
  • トップフレームにユーザーを閉じ込めることで、URLバーが変わっていないことに気づく前に autofill/password‑manager のデータを取得できます。

2025年の研究で観測された回避トリック

  • about:blank/data: ローカルフレームは親のオリジンを継承し、一部のコンテンツブロッカーのヒューリスティクスをバイパスします;ネストしたiframeは拡張機能がサードパーティフレームを破棄しても再生成されることがあります。
  • Permission propagation: 親の allow 属性を書き換えることで、ネストされた攻撃者フレームに対して fullscreen/camera/microphone を目立ったDOM変更なしで付与できます。

簡単なOPSECのヒント

  • マウスが離れたとき(body の mouseleave)に iframe に再フォーカスして、ユーザーがブラウザUIに到達するのを防ぎます。
  • フレーム内でコンテキストメニューや一般的なショートカット(keydown に対する F11Ctrl+LCtrl+T)を無効化して、脱出試行を遅らせます。
  • CSP がインラインスクリプトをブロックする場合は、リモートブートストラッパーを注入し、iframe で srcdoc を有効にして、ペイロードをメインページの適用されたCSPの外に配置します。

Clickjacking

References

Tip

AWSハッキングを学び、実践する:HackTricks Training AWS Red Team Expert (ARTE)
GCPハッキングを学び、実践する:HackTricks Training GCP Red Team Expert (GRTE) Azureハッキングを学び、実践する:HackTricks Training Azure Red Team Expert (AzRTE)

HackTricksをサポートする