Bypassing SOP with Iframes - 2
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)
在这个挑战的解决方案中, @Strellic_ 提出了与前一部分类似的方法。让我们来看看。
在这个挑战中,攻击者需要绕过这个:
如果他这样做,他可以发送一个 postmessage,其中包含将通过 innerHTML
写入页面的 HTML 内容,而没有进行清理(XSS)。
绕过 第一个检查 的方法是将 window.calc.contentWindow
设置为 undefined
,并将 e.source
设置为 null
:
window.calc.contentWindow
实际上是 document.getElementById("calc")
。你可以用 <img name=getElementById />
来覆盖 document.getElementById
(请注意,Sanitizer 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
。检查以下代码
为了绕过关于令牌的第二个检查,可以发送值为null
的**token
并使window.token
的值为undefined
**:
在postMessage中发送值为null
的token
是微不足道的。
在调用使用**document.cookie
的函数getCookie
时,window.token
。请注意,在null
源页面访问document.cookie
会触发一个错误**。这将使**window.token
的值为undefined
**。
学习与实践 AWS 黑客技术:HackTricks 培训 AWS 红队专家 (ARTE) 学习与实践 GCP 黑客技术:HackTricks 培训 GCP 红队专家 (GRTE)