Blocking main page to steal postmessage
IframesでRCを獲得する
このTerjanqの解説によると、ヌル起源から作成されたblobドキュメントはセキュリティ上の利点のために分離されており、つまり、メインページをビジーにしておくと、iframeページが実行されます。
基本的に、そのチャレンジでは分離されたiframeが実行され、ロードされた直後に親ページがフラグを含むポストメッセージを送信します。 ただし、そのポストメッセージ通信はXSSに対して脆弱です(iframeはJSコードを実行できます)。
したがって、攻撃者の目標は、親がiframeを作成させるが、親ページが機密データ(フラグ)を送信する前にそれをビジーにしてiframeにペイロードを送信することです。親がビジーである間、iframeはペイロードを実行し、親のポストメッセージメッセージを盗み、フラグを漏洩します。 最後に、iframeがペイロードを実行し、親ページがビジーでなくなると、フラグを送信し、ペイロードが漏洩します。
しかし、親をiframeを生成した直後にビジーにさせ、iframeが準備完了して機密データを送信するのを待っている間だけビジーにさせる方法はどうすればよいでしょうか?基本的に、親が実行する非同期アクションを見つける必要があります。たとえば、そのチャレンジでは、親が次のようにポストメッセージをリッスンしていました:
したがって、postmessage で大きな整数を送信し、その比較で文字列に変換される可能性があり、それには時間がかかります。
そして、iframeが作成された直後にpostmessageを正確に送信し、親からデータを受信する準備が整う前に、setTimeout
のミリ秒を調整する必要があります。
Last updated