Blocking main page to steal postmessage
使用 iframe 赢得 RCs
根据这个Terjanq 的解说,从空源创建的 blob 文档出于安全考虑而被隔离,这意味着如果您让主页面保持繁忙状态,iframe 页面将被执行。
基本上,在这个挑战中,一个隔离的 iframe 被执行,并且在它加载完成后,父页面将发送一个带有标志的post消息。 然而,该 postmessage 通信容易受到 XSS 攻击(iframe 可以执行 JS 代码)。
因此,攻击者的目标是让父页面创建 iframe,但在让父页面发送敏感数据(标志)之前让其保持繁忙状态,并将有效负载发送到 iframe。在父页面忙碌时,iframe 执行有效负载,这将是一些 JS 代码,将监听父 postmessage 消息并泄漏标志。 最后,iframe 执行了有效负载,父页面停止忙碌,因此发送标志,有效负载泄漏了它。
但是,您如何让父页面在生成 iframe 后立即保持繁忙状态,并在等待 iframe 准备好发送敏感数据时? 基本上,您需要找到异步的操作,您可以让父页面执行。例如,在该挑战中,父页面正在监听像这样的postmessages:
所以可以发送一个大整数在postmessage中,在比较时会转换为字符串,这将需要一些时间:
为了准确地在iframe创建后但在其准备好接收来自父级的数据之前发送该postmessage,您需要通过setTimeout
的毫秒数进行调整。
最后更新于