Blocking main page to steal postmessage
Last updated
Last updated
学习与实践 AWS 黑客技术:HackTricks 培训 AWS 红队专家 (ARTE) 学习与实践 GCP 黑客技术:HackTricks 培训 GCP 红队专家 (GRTE)
根据这篇 Terjanq 文章,从空源创建的 blob 文档出于安全原因是隔离的,这意味着如果你让主页面保持忙碌,iframe 页面将会被执行。
基本上,在这个挑战中,一个 隔离的 iframe 被执行,并且在它 加载后,父页面将会 发送一个 post 消息,包含 flag。 然而,这个 postmessage 通信是 易受 XSS 攻击的(iframe 可以执行 JS 代码)。
因此,攻击者的目标是 让父页面创建 iframe,但 在 让 父页面 发送 敏感数据(flag)之前 保持它忙碌,并将 有效载荷发送到 iframe。当 父页面忙碌时,iframe 执行有效载荷,这将是一些 JS 代码,用于监听 父 postmessage 消息并泄露 flag。 最后,iframe 执行了有效载荷,父页面停止忙碌,因此它发送了 flag,且有效载荷泄露了它。
但是你如何能让父页面在 生成 iframe 后立即忙碌,并且在等待 iframe 准备好发送敏感数据时保持忙碌呢? 基本上,你需要找到 异步 操作,让父页面 执行。例如,在这个挑战中,父页面 监听 postmessages 如下:
所以可以在 postmessage 中发送一个 大整数,在比较中会被 转换为字符串,这将需要一些时间:
为了精确地发送该postmessage,在iframe创建后但在其准备好接收来自父级的数据之前,您需要调整setTimeout
的毫秒数。
学习与实践 AWS 黑客技术:HackTricks Training AWS Red Team Expert (ARTE) 学习与实践 GCP 黑客技术:HackTricks Training GCP Red Team Expert (GRTE)