Blocking main page to steal postmessage
Last updated
Last updated
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
このTerjanqの解説によると、nullオリジンから作成されたblobドキュメントはセキュリティ上の利点のために隔離されているため、メインページを忙しく保つと、iframeページが実行されることになります。
基本的にこのチャレンジでは、隔離されたiframeが実行され、その読み込みが完了した後に親ページがフラグを含むpostメッセージを送信します。 しかし、そのpostmessage通信はXSSに脆弱です(iframeはJSコードを実行できます)。
したがって、攻撃者の目標は親にiframeを作成させることですが、親ページが機密データ(フラグ)を送信する前に、それを忙しく保ち、ペイロードをiframeに送信することです。親が忙しい間、iframeはペイロードを実行し、これは親のpostmessageメッセージをリッスンし、フラグを漏洩させるJSになります。 最終的に、iframeはペイロードを実行し、親ページは忙しさをやめるので、フラグを送信し、ペイロードがそれを漏洩させます。
しかし、親がiframeを生成した直後に忙しくなり、iframeが機密データを送信する準備ができるのを待っている間、どのように忙しくさせることができるでしょうか? 基本的に、親に実行させることができる非同期のアクションを見つける必要があります。例えば、このチャレンジでは親がこのようにpostmessagesをリッスンしていました:
そのため、postmessageで大きな整数を送信することが可能であり、その比較では文字列に変換されるため、時間がかかることになります。
そして、正確にpostmessageをiframeが作成された後、しかし親からデータを受け取る準備ができる前に送信するためには、setTimeout
のミリ秒を調整する必要があります。
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)