From a3b335d3166aacb726e597ea8506c93e1793084c Mon Sep 17 00:00:00 2001 From: Translator Date: Tue, 19 Aug 2025 20:47:36 +0000 Subject: [PATCH] Translated ['src/pentesting-web/xss-cross-site-scripting/iframes-in-xss- --- .../iframes-in-xss-and-csp.md | 82 +++++++++++++++---- 1 file changed, 66 insertions(+), 16 deletions(-) diff --git a/src/pentesting-web/xss-cross-site-scripting/iframes-in-xss-and-csp.md b/src/pentesting-web/xss-cross-site-scripting/iframes-in-xss-and-csp.md index 6623a55a6..b54832f7d 100644 --- a/src/pentesting-web/xss-cross-site-scripting/iframes-in-xss-and-csp.md +++ b/src/pentesting-web/xss-cross-site-scripting/iframes-in-xss-and-csp.md @@ -45,8 +45,8 @@ var secret = "child secret" alert(parent.secret) ``` -前のHTMLにHTTPサーバー(例えば`python3 -m http.server`)を介してアクセスすると、すべてのスクリプトが実行されることに気付くでしょう(CSPがそれを防いでいないため)。**親は任意のiframe内の`secret`変数にアクセスできません**が、**同サイトと見なされるif2およびif3のみが元のウィンドウの秘密にアクセスできます**。\ -if4が`null`オリジンと見なされることに注意してください。 +前のHTMLにHTTPサーバー(例えば`python3 -m http.server`)を介してアクセスすると、すべてのスクリプトが実行されることに気付くでしょう(CSPがそれを防いでいないため)。**親は任意のiframe内の`secret`変数にアクセスできません**が、**同サイトと見なされるif2とif3のみが元のウィンドウの秘密にアクセスできます**。\ +if4は`null`オリジンと見なされることに注意してください。 ### CSPを持つiframe @@ -61,7 +61,7 @@ if4が`null`オリジンと見なされることに注意してください。 +content="script-src 'sha256-iF/bMbiFXal+AAl9tF8N6+KagNWdMlnhLqWkjAocLsk'" /> " if __name__ == "__main__": app.run() ``` -### その他のペイロードが発見された野生の中で +#### 新しい (2023-2025) CSP バイパス技術と iframe + +研究コミュニティは、制限的なポリシーを打破するために iframe を悪用する創造的な方法を発見し続けています。以下は、過去数年間に発表された最も注目すべき技術です: + +* **ダングリングマークアップ / 名前付き iframe データ抽出 (PortSwigger 2023)** – アプリケーションが HTML を反映するが、強力な CSP がスクリプトの実行をブロックする場合、*ダングリング* ` + + ``` ### Credentialless iframes -[この記事](https://blog.slonser.info/posts/make-self-xss-great-again/)で説明されているように、iframeの`credentialless`フラグは、リクエストに資格情報を送信せずにiframe内にページを読み込むために使用され、iframe内で読み込まれたページの同一オリジンポリシー(SOP)を維持します。 +[この記事](https://blog.slonser.info/posts/make-self-xss-great-again/)で説明されているように、iframeの`credentialless`フラグは、リクエストに資格情報を送信せずにiframe内にページをロードするために使用され、iframe内でロードされたページの同一オリジンポリシー(SOP)を維持します。 -これにより、iframeは親ページに読み込まれた同じSOP内の別のiframeから機密情報にアクセスできます: +**Chrome 110(2023年2月)以降、この機能はデフォルトで有効**になっており、仕様は*anonymous iframe*という名前の下でブラウザ間で標準化されています。MDNはこれを次のように説明しています:「実際のオリジンと共有されないように、第三者のiframeを新しい一時的なストレージパーティションにロードするメカニズム」。攻撃者と防御者への影響: + +* 異なるcredentialless iframe内のスクリプトは**同じトップレベルのオリジンを共有**し、DOMを介して自由に相互作用できるため、マルチiframe自己XSS攻撃が可能になります(以下のPoCを参照)。 +* ネットワークが**資格情報を削除**されているため、iframe内のリクエストは実質的に認証されていないセッションとして振る舞います – CSRF保護されたエンドポイントは通常失敗しますが、DOMを介して漏洩可能な公開ページは依然として範囲内です。 +* credentialless iframeから生成されたポップアップは暗黙的に`rel="noopener"`を取得し、一部のOAuthフローを破壊します。 ```javascript -window.top[1].document.body.innerHTML = 'Hi from credentialless'; -alert(window.top[1].document.cookie); +// PoC: two same-origin credentialless iframes stealing cookies set by a third +window.top[1].document.cookie = 'foo=bar'; // write +alert(window.top[2].document.cookie); // read -> foo=bar ``` - 攻撃の例: Self-XSS + CSRF @@ -183,7 +227,7 @@ fetchLater(req,{activateAfter: timeout}) ``` ## SOPにおけるIframes -次のページを確認してください: +以下のページを確認してください: {{#ref}} ../postmessage-vulnerabilities/bypassing-sop-with-iframes-1.md @@ -201,4 +245,10 @@ fetchLater(req,{activateAfter: timeout}) ../postmessage-vulnerabilities/steal-postmessage-modifying-iframe-location.md {{#endref}} + + +## 参考文献 + +* [PortSwigger Research – CSPを回避するためのフォームハイジャックの使用 (2024年3月)](https://portswigger.net/research/using-form-hijacking-to-bypass-csp) +* [Chrome Developers – Iframe credentialless: COEP環境にiframeを簡単に埋め込む (2023年2月)](https://developer.chrome.com/blog/iframe-credentialless) {{#include ../../banners/hacktricks-training.md}}