考虑一个具有密码的合法站点的开放会话的用户。此页面没有反CSRF令牌。
黑客用两个隐藏的iframes创建一个网页。一个iframe使用密码在页面上获取密码,并通过html5 windows.postMessage()将该密码发送到另一个iframe (获取攻击者的站点),后者接受此密码并通过http GET中的查询参数将其发送到黑客的web服务中。
通过网络钓鱼攻击,黑客引诱用户用开放会话点击他的网页上有这2个iframes和窃取密码的链接。
这次攻击有可能吗?
发布于 2015-04-14 19:06:04
一个iframe使用密码在页面上获取密码,并通过html5 windows.postMessage()将该密码发送到另一个iframe (获取攻击者的站点),后者接受此密码并通过http GET中的查询参数将其发送到黑客的web服务中。
postMessage是用Javascript完成的。这意味着,除非受害者页面是以某种方式显式设计的,否则不能强制使用CSRF攻击来强制postMessage,可以通过简单的POST或GET请求触发对跨原点页的任意postMessage调用。相反,攻击者需要注入脚本来触发postMessage,也就是说,它需要跨站点脚本(XSS)。但是,如果XSS是可能的,那么通常没有必要通过使用postMessage来使它变得过于复杂。
发布于 2015-04-15 09:22:51
不- window.postMessage触发JavaScript事件,而不是HTTP请求.
目标窗口需要侦听消息。如MDN所指出的那样:
如果您不希望从其他站点接收消息,请不要为消息事件添加任何事件侦听器。这是一种完全避免安全问题的绝对安全的方法。如果您确实希望从其他站点接收消息,请始终使用源验证发件人的身份。
因此,这不是postMessage的设计缺陷--然而,过去的的实现缺陷postMessage,就像WebKit里的这个有一些缺陷:
如果HTML文档包含标记,则其href属性的值将覆盖document.documentURI的值。这与实现documentURI、Firefox和Opera的其他两个浏览器不一致。另外,JavaScript不应该能够覆盖document.documentURI的值。这个bug有一些安全后果。例如,攻击者可以将postMessage的uri参数设置为任意URI,从而挫败使用uri进行的任何安全检查。uri参数对于区分HTTP和HTTPS以及确定发送方的主机是否与其document.domain值不同非常重要。
https://security.stackexchange.com/questions/86010
复制相似问题