跨域 iframe 安全性

信息安全 Web应用程序 网页浏览器 xss 跨域 框架
2021-09-02 03:21:58

一个站点监听来自任何人的浏览器消息的可利用性有多大?

我正在一个发现一些 iframe 问题的网站上工作。案例是站点 A 有一个站点 B 的 iframe,站点 A 从任何地方侦听“消息” ,然后当消息进入时它可以执行两种不同的操作:

  • 设置 document.location = "传入消息数据"
  • 创建一个表单,将 action 属性值设置为“传入消息数据”,将其添加到 DOM 中,然后提交表单。

这意味着我可以设置站点 Evil,包含站点 A 的 iframe,然后开始发送任意消息,例如“javascript:alert(1)”,这将在上述两种情况下在 iframe 上下文中执行 javascript。在我向我工作的人报告这个问题之前,我需要有一个场景,在这个场景中这将是一个主要问题。这就是它变得棘手的地方,因为我无法真正想出一个这将是一个重大问题的场景。我的想法是:

  • 我可以在站点 A 的上下文中执行 javascript,但由于 SoP,我无法获取 cookie。
  • 我可以在站点 Evil 上设置一个关键侦听器,并让站点 A iframe 填满屏幕,要求登录,这样可以收集站点 A 的登录信息。这需要一些社会工程才能正常工作。

但这是我能想到的最好的,所以我的问题是,我是否完全忽略了一些东西?谷歌搜索不会产生任何其他选择。

编辑:

显然,这通过站点 B(它是一家半知名公司,但仍然)为 XSS 打开了站点 A(我为之工作)。我正在考虑提出的另一点是,到底为什么有人会以这种方式做任何事情?创建一个表单并提交并回答一些收到的数据?我想不出这样做的充分理由,也许你们中的任何一个好人都可以?

编辑2:

似乎没有办法绕过同源策略,即使我可以通过位于 Site Evil 上的 iframe 在站点 A 的上下文中执行任意 javascript。因此,这种“漏洞”与攻击者让用户点击任意链接没有什么不同。

2个回答

如果您可以通过发送消息在该页面/框架中执行 Javascript,您肯定可以通过获取 cookie 来劫持会话。

参考:如何通过javascript发送跨域post请求

这里的最低要求是,您需要一台由您控制的服务器。这样您就可以配置Access-Control-Allow-Origin为您的 AJAX 请求生成的响应的标头。

我不会给出“操作方法”(利用),但是:

  • 您可以检索 cookie(如评论中所述,但仅限非 HTTP 的)。
  • 您可以绕过所有 CSRF 保护(例如,如果它们基于Referer/ OriginHTTP 标头)。
  • 您可能会显示一个弹出窗口,要求用户重新登录(并因此窃取他们的密码)。
  • 您可以下载任意文件(包括 .exe),并且用户肯定会信任它,因为它来自受信任的网站。
  • 您可能会通过包含令人震惊的图像或其他方式来破坏公司的声誉。
  • 您可以在 URI 中嵌入恶意软件/病毒(在数据 uri 中使用 base64ed EICAR 字符串进行简单的利用)

按照建议解决此问题:仅接受受信任的传入域,并在将数据放入表单等之前验证数据(您不需要消息数据中的完整 URI,除非您真的想将表单提交到任何域和任何协议)。