Javascript 简明教程

JavaScript - Clickjacking Attack

Clickjacking Attack

攻击者使用网络攻击的一种形式点击劫持欺骗用户点击与他们感知不同的对象;此类欺骗可能导致无意中的操作。攻击者通过覆盖有效内容的不可见元素或框架来实现此目的,从而伪装恶意意图或直接操纵网页元素的外观。

点击劫持导致严重的风险,例如未经授权的金融交易、潜在的数据泄露和敏感信息泄露。点击劫持影响用户和网站所有者,导致法律后果、经济损失和加剧网络安全担忧。点击劫持的欺骗性可能会损害用户信任,从而在数字生态系统中带来深远后果。

免责声明:本章内容仅用于教育目的!

How clickjacking works?

Overlaying Content

  1. 攻击者创建一个恶意/垃圾邮件/诈骗网站,或将恶意代码注入到本质上其实是合法的网站中。

  2. 攻击者在页面上的合法内容上定位不可见的元素或框架。这些元素可以是透明的 iframe 或其他 HTML 元素。

Deceptive Presentation

  1. 然后攻击者诱使用户与页面上的可见元素进行交互,这些元素通常是按钮、链接或表单。

  2. 但是,这些可见元素实际上位于不可见的恶意元素之上。

User Interaction

  1. 当用户与可见元素交互(单击、输入等)时,他们却不知不觉地与合法的页面内容中覆盖的恶意元素进行交互。

Unintended Actions

  1. 攻击者可以操纵隐藏的元素,以代表用户执行意外的操作。这可能包括进行不需要的交易、更改帐户设置,甚至提交敏感信息。

User Unawareness

  1. 由于用户认为他们正在与他们看到的可见元素进行交互,因此他们不知道他们的操作被重新定向来执行恶意活动。

Examples

Example 1: Button Overlay

提供的 HTML 代码展示了一个按钮覆盖点击劫持示例。该按钮显示给用户,但实际上它覆盖在一个隐藏的恶意 iframe 上,将用户引向一个可能有害的页面。

home.html

<!DOCTYPE html>
<html>
<body>
   <h2>This is content of the home page</h2>
      <iframe src="legitimate-site.html" width="100%" height="100%"></iframe>
   <div>
   <button onclick="window.location.href='malicious-site.html'">Click Me</button>
   </div>
</body>
</html>

legitimate-site.html

<!DOCTYPE html>
<html>
<body>
   <header>
      <h1>Welcome to Legitimate Site</h1>
   </header>
   <section>
      <p>This is a legitimate website. You can trust the content here.</p>
   </section>
   <footer>
      <p>© 2024 Legitimate Site. All rights reserved.</p>
   </footer>
</body>
</html>

malicious-site.html

<!DOCTYPE html>
<html>
<head>
   <style>
      body {
         font-family: Arial, sans-serif;
      }
      .danger-sign {
         color: red;
         font-size: 2em;
      }
      .warning-message {
         color: red;
         font-weight: bold;
      }
   </style>
</head>
<body>
   <header>
      <h1 class="danger-sign">⚠️ Danger: Malicious Site</h1>
   </header>
   <section>
      <p class="warning-message">This website has been identified as potentially harmful. Visiting it may pose a security risk to your computer and personal information.</p>
   </section>
   <footer>
      <p>Please close this page immediately and do not proceed.</p>
   </footer>
</body>
</html>

Output

clickjacking attack

Example 2

在此示例中,当网页加载时,它会在一个标识为“clickMe”的按钮上自动单击。该特定按钮在通过单击接收用户交互后,会激活一个 JavaScript 事件,该事件会将用户重新路由到名为“malicious-site.html”的潜在有害网站。这种秘密操作令人不安地在不知情或未经同意的情况下将用户引导至意外目的地。始终注意:这些做法本质上确实具有潜在危害性且不道德;人们必须对此负责,并且在法律和道德范围内采取行动。

malicious-site.html 代码与上述相同。

home.html

<!DOCTYPE html>
<html>
<head>
   <style>
      body {
         display: flex;
         align-items: center;
         justify-content: center;
         height: 100vh;
         margin: 0;
      }

      button {
         position: absolute;
         z-index: 1;
         background-color: transparent;
         border: none;
         font-size: 20px;
         cursor: pointer;
      }
   </style>
</head>
<body onload="myFunction()">
   <h2>Your Content Goes Here</h2>
   <button id="clickMe">Click Me</button>
   <script>
      window.onload = function() {
         var button = document.getElementById("clickMe");
         button.click();
      };
      document.getElementById("clickMe").addEventListener("click", function() {
         window.location.href = "malicious-site.html";
      });
   </script>
</body>
</html>

Output

clickjacking attack2

Real World Clickjacking Incidents

1. Facebook "Like" Button (2011)

攻击者在诱人的视频缩略图上覆盖了一个恶意“点赞”按钮,欺骗用户不知不觉点赞恶意页面。

2. Adobe Flash Update Scam (2015):

伪装成 Adobe Flash 更新的恶意按钮覆盖在合法网站上,导致用户不知不觉下载恶意软件。

3. Twitter Clickjacking Attack

Twitter 上的恶意链接伪装成诱人内容,导致用户不知不觉在转发并传播恶意内容。

4. LinkedIn Fake Connection Requests

Clickjacking 被用来欺骗 LinkedIn 用户连接虚假个人资料,方法是在看似无辜的内容上覆盖连接请求按钮。

5. Google Play Store Deception

Google Play 商店上的恶意叠加层欺骗用户进行无意下载或操作,通常与广告相关。

Preventive Measures

1. X-Frame-Options Header

在 Web 服务器的响应中将 X-Frame-Options 标头设置为“DENY”或“SAMEORIGIN”,以防止你的网站被嵌入 iframe 中。

2. Frame-Busting Scripts

在你的网页中实施破帧脚本,以防止它们被嵌入 iframe 中。

3. Content Security Policy (CSP)

使用内容安全策略标头控制你的网站可以从中加载内容的源,从而降低 Clickjacking 风险。

4. User Education

教育用户了解与交互不熟悉或可疑内容相关的潜在风险。

随着网络安全的发展,Clickjacking 的未来趋势可能包括利用人工智能的更复杂技术、越来越多地使用社会工程策略以及关注绕过高级安全措施。此外,随着增强现实 (AR) 和虚拟现实 (VR) 等新兴技术的兴起,沉浸式的 Clickjacking 体验的新向量可能会出现,需要在防御策略和用户意识方面不断创新。