JavaScript - 點選劫持攻擊



點選劫持攻擊

點選劫持是一種網路攻擊形式,攻擊者利用它欺騙使用者點選他們感知到的不同物件;這種欺騙可能導致意外操作。攻擊者透過在有效內容上覆蓋不可見的元素或框架來實現這一點,從而偽裝惡意意圖或直接操縱網頁元素的外觀。

點選劫持會導致嚴重的風險,例如未經授權的金融交易、潛在的資料洩露以及敏感資訊的洩露。點選劫持會影響使用者和網站所有者,導致法律後果、經濟損失和日益嚴重的網路安全問題。點選劫持的欺騙性性質可能會損害使用者信任,並在數字生態系統中產生深遠的影響。

免責宣告:本章內容僅供教育目的!

點選劫持是如何運作的?

覆蓋內容

  • 攻擊者建立惡意/垃圾郵件/詐騙網站,或將惡意程式碼注入實際上是合法性質的網站。

  • 攻擊者將不可見的元素或框架放置在頁面上的合法內容之上。這些元素可以是透明的 iframe 或其他 HTML 元素。

欺騙性呈現

  • 然後,攻擊者誘使使用者與頁面上的可見元素互動,這些元素通常是按鈕、連結或表單。

  • 但是,這些可見元素實際上位於不可見的惡意元素之上。

使用者互動

  • 當用戶與可見元素互動(點選、輸入等)時,他們不知不覺地與隱藏的惡意元素互動,這些元素覆蓋在合法內容之上。

意外操作

  • 攻擊者可以操縱隱藏的元素,代表使用者執行意外操作。這可能包括進行不必要的交易、更改帳戶設定,甚至提交敏感資訊。

使用者不知情

  • 因為使用者認為他們正在與看到的可見元素互動,所以他們不知道自己的操作被重定向以執行惡意活動。

示例

示例 1:按鈕覆蓋

提供的 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>

輸出

Clickjacking Attack

示例 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>

輸出

Clickjacking Attack

現實世界中的點選劫持事件

1. Facebook“贊”按鈕 (2011)

攻擊者在誘人的影片縮圖上覆蓋了一個惡意的“贊”按鈕,欺騙使用者不知不覺地喜歡了一個惡意的頁面。

2. Adobe Flash 更新詐騙 (2015)

偽裝成 Adobe Flash 更新的惡意按鈕覆蓋在合法網站上,導致使用者在不知情的情況下下載惡意軟體。

3. Twitter 點選劫持攻擊

Twitter 上偽裝成誘人內容的惡意連結導致使用者無意中轉發和傳播惡意內容。

4. LinkedIn 虛假連線請求

點選劫持被用來欺騙 LinkedIn 使用者與虛假個人資料建立連線,方法是在看似無害的內容上覆蓋連線請求按鈕。

5. Google Play 商店欺騙

Google Play 商店上的惡意覆蓋導致使用者進行意外下載或操作,通常與廣告相關。

預防措施

1. X-Frame-Options 標頭

在 Web 伺服器的響應中將 X-Frame-Options 標頭設定為 DENY 或 SAMEORIGIN,以防止您的站點嵌入在 iframe 中。

2. 防範框架指令碼

在您的網頁中實現防範框架指令碼,以防止它們嵌入在 iframe 中。

3. 內容安全策略 (CSP)

使用內容安全策略標頭來控制您的網站可以載入內容的來源,從而降低點選劫持的風險。

4. 使用者教育

教育使用者瞭解與互動不熟悉或可疑內容相關的潛在風險。

隨著網路安全的發展,點選劫持的未來趨勢可能包括利用人工智慧的更復雜技術、增加社會工程戰術的使用,以及重點繞過高階安全措施。此外,隨著增強現實(AR)和虛擬現實(VR)等新興技術的興起,沉浸式點選劫持體驗的新途徑可能會出現,這要求防禦策略和使用者意識不斷創新。

廣告