该测试如何证明我的应用程序容易受到点击劫持攻击?

信息安全 渗透测试
2021-08-29 22:24:41

我想了解更多关于点击劫持的信息。我一直在阅读一篇关于点击劫持文章,其中提供了用于测试点击劫持漏洞的 HTML 代码。我尝试了与那篇文章中描述的相同的方法,我“You’ve been clickjacked!”在页面顶部收到消息,表明我的 Web 应用程序容易受到这种类型的攻击:

要测试网站是否容易受到点击劫持,请创建一个类似于以下内容的 HTML 页面,将 RED 突出显示的 URL 更改为指向您的目标网站:

<html>
  <head>
    <title>Clickjack test page</title>
  </head>
  <body>
    <p>You’ve been clickjacked!</p>
    <iframe sandbox="allow-scripts allow-forms" src="http://localhost:8080" style="width:100%;height:90%"></iframe>
  </body>
</html>

如果您看到文字“您已被点击劫持!” 在页面顶部,您的网站很容易受到攻击。

这如何证明我的网站易受攻击?

4个回答

您的网页允许将自己放入 iframe 中。

攻击者可以轻松地将您的网站放在他网页上的 iframe 中,巧妙地掩盖其中的大部分内容,并诱骗用户点击那里的按钮。

由于CORSCSRF令牌,通常不同域下的网站无法欺骗对您网站的请求。但是,它们可以欺骗用户点击按钮(例如,“注销”按钮。)

阅读此 OWASP 页面以了解如何防止点击劫持

您允许从您控制之外的其他域构建网页。阅读关于点击劫持的OWASP 文章

防止点击劫持主要有两种方法:

  1. 发送正确的浏览器响应标头,指示浏览器不允许来自其他域的框架
  2. 在 UI 中使用防御性代码以确保当前帧是最顶层的窗口

它证明您的应用程序可以被其他域框架化,因此可以点击劫持。

碰巧遇到了这个问题,并认为我会插话以澄清该测试的问题所在。这并不是真的不正确,但它只考虑了页面上提到的点击劫持防御脚本。它没有考虑 X-FRAME-OPTIONS 标头防御。

如果您执行该测试,可能会发生几件事:

  • 点击劫持文本消失:这意味着存在 javascript 防御,或者没有标头防御,或者您的浏览器不支持它。
  • clickjack 文本仍然存在,但 iframe 中没有显示任何内容:这意味着存在标头防御,并且您的浏览器支持它。您无法判断是否实施了 javascript 防御,因为 iframe 页面从未加载。
  • 点击劫持文本仍然存在,并且网站在 iframe 中加载:这意味着没有 javascript 防御,或者没有标头防御,或者您的浏览器不支持它。

如第二个选项所示,该页面可以得到适当的保护,但您仍然会看到点击劫持文本。可以肯定的是,最好使用不支持 X-FRAME-OPTIONS 的现代和旧浏览器执行测试。

当然,这两种防御都应该实施。标头防御针对的是现代浏览器,而 javascript 防御针对的是旧版浏览器。

查看https://www.owasp.org/index.php/Clickjacking_Defense_Cheat_Sheet了解更多信息。

我尝试使用http://google.com网站代替您在上面的 localhost,但它仍然显示您已被点击劫持。我不认为看到该消息表明您的网站存在漏洞。相反,如果您在 iframe 中看到带有该消息的网页,则意味着它是可点击的。如果我错了,请纠正我。