Bypassing SOP with Iframes - 2
Iframes in SOP-2
在这个挑战的解决方案中, @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
**。
Last updated