iframe 如何导致 xsrf?

信息安全 Web应用程序 渗透测试 攻击预防 源代码 csrf
2021-08-23 06:47:58

我知道表单标签如何容易出现不使用任何令牌(或任何其他质询-响应机制)的 CSRF,但我想知道如何使用 iFrame 来引发 XSRF 攻击以及缓解技术是什么?以下是代码示例:

document.write('<IFRAME SRC="https://somedomain/abcde;src=;type=;cat=;ord=;num='+ a + '?" WIDTH=1 HEIGHT=1 FRAMEBORDER=0></IFRAME>');
3个回答

您给出的代码示例是一个跨站点脚本漏洞,因为它允许执行任意 JavaScript,假设“a”不受信任:

a = "\"); evil(); document.write(\""

恶意站点可以使用 iframe 通过CSRF来利用易受攻击的站点:

在典型的 CSRF 攻击中,浏览器被恶意站点欺骗,向易受攻击的站点提交请求。浏览器将包含该站点的 cookie,因此从易受攻击的站点的角度对请求进行身份验证。

虽然有多种方法可以触发 GET 请求,但跨站点 POST 请求通常是通过提交表单来创建的。虽然 JavaScript 可用于自动触发提交,但不能用于隐藏结果页面因此,在一个简单的基于 POST 的 CSRF 攻击中,用户将在事后收到警告。

所以诀窍是将恶意的自动提交表单放入不可见的 IFrame中。因此,用户将不会看到显示提交结果的网页。

一个相关的攻击是点击劫持:易受攻击的站点(例如 Facebook 的点赞按钮)被加载到一个透明的 iframe 中,然后使用 JavaScript 将其滚动到适当的位置并保持在鼠标光标处。如果用户试图点击恶意网站上的任何内容,它将改为点击透明 iframe。

iframe不能引入跨站点请求伪造或跨站点脚本漏洞。由于 iframe 的Origin 继承规则,iframe无法以这种方式影响应用程序

攻击者在UI Redress 攻击中使用 iframe 您还应该阅读CSRF 预防备忘单特别是关于如何使用 XSS 来破坏 CSRF 保护系统的部分。

如果 CSRF 易受攻击的应用程序允许自己嵌入到 Iframe 中,那么可以。它如何帮助攻击者?

通过将大小设置为零,可以使 iframe 不可见。因此,与普通的 csrf 相比,受害者可能会知道一些可疑的东西,在不可见的 iframe 的情况下,他什么也看不到。

攻击者将代表受害者提交表单,该表单将嵌入到 iframe 中。这很酷。

事实上,如果应用程序使用令牌来阻止 CSRF,但仍然允许自己被陷害,攻击者可以使用另一种技巧。

使用假验证码方法,他可以欺骗用户使用一些社会工程和 javascript 提交令牌。请注意,这仅在 Firefox 中有效,令人惊讶!

http://blog.kotowicz.net/2011/07/cross-domain-content-extraction-with.html