Bypassing SOP with Iframes - 2
Last updated
Last updated
AWSハッキングを学び、実践する:HackTricks Training AWS Red Team Expert (ARTE) GCPハッキングを学び、実践する:HackTricks Training GCP Red Team Expert (GRTE)
このチャレンジの解決策で、 @Strellic_は前のセクションと同様の方法を提案しています。確認してみましょう。
このチャレンジでは、攻撃者はこれをバイパスする必要があります:
もし彼がそうすれば、彼は**innerHTML
でサニタイズなしにページに書き込まれるHTMLコンテンツを持つpostmessage**を送信できます(XSS)。
最初のチェックをバイパスする方法は、**window.calc.contentWindow
をundefined
にし、e.source
をnull
**にすることです:
**window.calc.contentWindow
は実際にはdocument.getElementById("calc")
です。あなたは<img name=getElementById />
でdocument.getElementById
**をクラッシャーできます(サニタイザーAPI -こちら-はデフォルトの状態でDOMクラッシャー攻撃から保護するように設定されていないことに注意してください)。
したがって、あなたは**<img name=getElementById /><div id=calc></div>
でdocument.getElementById("calc")
をクラッシャーできます。そうすると、window.calc
はundefined
**になります。
さて、e.source
をundefined
またはnull
にする必要があります(なぜなら==
が使用されているため、null == undefined
はTrue
です)。これを得るのは「簡単」です。iframeを作成し、そこからpostMessageを送信し、すぐにiframeを削除すれば、**e.origin
はnull
**になります。次のコードを確認してください。
第二のチェックをバイパスするためには、**token
を値null
で送信し、window.token
の値をundefined
**にすることです:
値null
でpostMessageにtoken
を送信するのは簡単です。
window.token
は、document.cookie
を使用する関数getCookie
を呼び出す際に使用されます。null
オリジンページでのdocument.cookie
へのアクセスはエラーを引き起こすことに注意してください。これにより、**window.token
はundefined
**の値になります。
AWSハッキングを学び、実践する:HackTricks Training AWS Red Team Expert (ARTE) GCPハッキングを学び、実践する:HackTricks Training GCP Red Team Expert (GRTE)