将站点链接放在 iframe 中(以及在 iframe 中打开时)如何表明该站点容易受到点击劫持攻击?我还读到如果该站点是一个论坛基地,那么该漏洞可能很严重。为什么?如果可能,请提供一些例子。
这怎么能证明点击劫持漏洞?
是的,你对此提出质疑是对的。
易受点击劫持的网站和实际可利用的漏洞是两件不同的事情。
Bhuvanesh在他们的回答中讨论了点击劫持攻击的一小部分。OWASP 文章中提到了这种类型的点击劫持:
使用类似的技术,击键也可以被劫持。通过精心设计的样式表、iframe 和文本框组合,用户可能会被引导相信他们正在输入电子邮件或银行帐户的密码,但实际上是在攻击者控制的不可见框架中输入密码。
这种类型的点击劫持可能适用于使用3-D Secure或Verified By Visa在 IFrame 中询问您的秘密银行密码的网站。外部网站可能会仔细定位自己的文本框以获取您的密码。但是,这不是点击劫持攻击或漏洞通常的含义。
Bhuvanesh 的回答是正确的,因为同源策略会阻止在您自己的站点中从另一个来源生成 IFrame。但是,它不会阻止其他网站在自己的网页中构建您的网站。正是这种用例使大多数网站容易受到点击劫持。这本质上就是点击劫持攻击。攻击者在 IFrame 中将您的页面加载到您的域中,但使用 CSS 使您的页面不可见。攻击者将他们自己的按钮放置在您的页面下方。当受害者点击这些按钮时,浏览器实际上会将点击发送到您的站点。
一个例子 - 你的网站是example.com:
- 假设您有一个页面
confirmDeleteAccount.php,中间有一个按钮。 - 攻击者在他们的网站上为您的网站制作了一个 IFrame:
<iframe src="http://example.com/confirmDeleteAccount.php"></iframe> - CSS 用于调整 IFrame 的大小和位置,并使其不可见。
- 攻击者的代码在他们自己的页面上放置了一个按钮,就
I confirm I want to delete my Example.com account在您在 IFrame 中加载的页面上的按钮下方。因为 IFrame 是不可见的,所以攻击者的按钮在受害者看来是唯一可见的。 - 攻击者的代码集使他们的按钮显示为
Click here to claim your free holiday。 - 受害者单击了她认为是攻击者的按钮,但是由于该页面在按钮上方有包含您的站点的 IFrame,因此受害者实际上是在单击您的按钮以删除他们的帐户。
适当地设置X-Frame-Options将防止您的网站被框住(请注意,这现在已被 CSP 取代frame-ancestors,但目前两者都是可取的,因为并非所有浏览器都支持frame-ancestors)。
我需要设置X-Frame-Options/frame-ancestors吗?
上面的示例显示了一个可利用的点击劫持漏洞。如果有任何单击按钮会产生后果,那么点击劫持只是您网站上的一个问题。因此,点击劫持漏洞可利用有两个要求:
- 您有一个可框架的页面(即没有
X-Frame-Options/frame-ancestors)。 - 您有一个只能通过鼠标操作进行交互的页面,这会导致用户产生不良结果或以某种方式使攻击者受益。
因此,如果您有一个需要用户输入的页面,并且攻击者无法提供该用户输入,那么该页面将无法被利用。但是,如果页面上的表单是由查询字符串值或 POST 数据完成的,那么攻击者将有一种方法来为攻击提供数据。
在不考虑您网站上的每个页面以及提供给它的数据以及从何处提供的数据的情况下,确定您的网站是否可利用可能会很复杂。因此,如果缺少这些标头,许多安全评估和渗透测试往往会报告您的站点很容易受到攻击。我的建议通常是,除非您的网站需要作为其功能的一部分进行框架化,否则请始终添加标题。设置这些标头以减轻其他漏洞也很好,例如路径相关样式表导入 (PRSSI)、跨站点历史操作 (XSHM)或框架嗅探。
想象一下 facebook 可以放在 iframe 中。我可以制作一个带有“赢取免费自行车!”按钮的网页,然后在上面放置一个带有我的 Facebook 页面的透明 iframe,这样“点赞”按钮正好位于/覆盖“赢取免费自行车!” 按钮。如果有人点击那个按钮,他不会赢得一辆自行车,但他会喜欢我的 Facebook 页面而不会注意到它。
想象一下,您有一个简单的登录表单和一个提交按钮。提交按钮将凭据发送到服务器。
攻击者可以在 iFrame 中加载此登录页面,然后在创建与原始页面类似样式的登录表单后,将新表单放置在页面上的原始表单之上。获得数据后,他们手动提交并尝试破解帐户。
斯坦福网络安全研究已经想出聪明的方法来解决这个问题:
https://www.codemagi.com/blog/post/194
您可以在此处找到更多示例:
实际上,点击劫持不仅仅是将 iframe 加载到您的网站中。这只是一个测试,表明您的网站容易受到点击劫持。
现在的现代浏览器也不允许这种测试,因为 Chrome、IE、Firefox 等浏览器遵循同源策略,不允许将 iframe 加载到您的网站中。
您可以从本地主机尝试此漏洞。但是您必须通过将 iframe 加载到您的网站来利用某些东西,例如,您必须在用户不知情的情况下更改用户的密码,要求他们为您单击 Offer。您可以参考此链接了解点击顶升的工作原理点击顶升
您还可以参考 OWASP 十大项目来解决此漏洞。OWASP 点击顶升