使用 iframe 中的 XSS 漏洞危害父级?

信息安全 xss javascript 框架
2021-08-13 21:51:42

我有一个网站,我们称之为它,它在 iframeparent.com中嵌入了第三方插件。child.com我在child.com.

嵌入的页面child.com包含一个表单,该表单可以 POST 到同一域上的另一个页面。我可以通过提交表单来利用该漏洞。我用 Burp 拦截 POST 请求,并将我的有效负载插入其中。然后执行有效负载。

我的问题是有效载荷在child.com域的 iframe 内运行。我的目标是妥协parent.com(为了赢得漏洞赏金)。是否有可能利用此漏洞以某种方式实现这一目标?例如,我可以以某种方式将表单提交给parent.com吗?

2个回答

iframe 有一个名为“sandbox”的特殊标签,用于设置如何处理 iframe 的内容。使用该标记,您可以精细地设置权限以允许 iframe 与父级交互。通常,iframe 对从不同域加载时它们如何影响父级有很大的限制,但如果您看到类似的内容:allow-same-origin、allow-scripts、allow-top-navigation 等,则可能存在特定情况利用它的方法。

[编辑] iframe XSS 攻击的大多数情况实际上并不涉及将任意代码注入父网站。相反,它们通常是以下之一:

  1. 您控制子网站,并将其替换为虚假登录表单之类的东西,以使人们认为他们正在登录父网站以访问内容,而您实际上是在钓鱼他们的凭据。
  2. 您分发了其他程序员嵌入他们网站的“有用”服务,您实际使用该服务来钓鱼私人信息。然后你祈祷人们对这些其他网站的信任,让他们给你一些有用的东西。例如:一个税级计算器,询问您的姓名、地址和 SSN。
  3. 您创建了一个名为 parents.com 的邪恶孪生网站,而不是 parent.com,该网站在 iframe 中包含 parent.com,因此它的行为就像真实网站一样,但您的网站版本正在收集最终用户的私人信息。

因此,您能够利用这种情况的最有可能的方法是,如果您可以将表单替换为类似于 parent.com 的登录表单的内容,并且不发布到 parent.com,而是发布到您实际控制的内容窃取用户凭据。

不,这可能是不可能的,因为 iframe 本质上是限制性的。请记住,所有 iFrame 都是对作为源包含的站点的简单 GET 请求,然后将其嵌入到父站点并允许与其进行进一步交互。您已经描述了子站点中的 POST-XSS 漏洞,它很难在 iframe 中自动触发,因为它再次只是一个 GET 请求。

从理论上讲,您显然可以找到一个浏览器漏洞,它允许您将 javascript 从子站点执行到父站点,但这样的事情比父站点上的任何赏金都更有价值。此外,它可能仍然不适用于您的情况,因为您只有 POST-XSS。

值得注意的是,尽管 iFrame 像其他用户和我自己所指出的那样具有限制性,但javascript:URI 有一个例外。以这样的 iframe 为例:

<iframe src="javascript:alert(0)"></iframe>

如果这是在网站上,您不仅会收到警报,而且会在“父站点”上发出警报,因为从技术上讲,没有子站点。这是一个有趣的行为,并证明 iFrame 并不总是那么“限制性”。