Shikata Ga Nai

Private? There is no such things.

LAB: 基本的なクリックジャッキングとCSRFトークン保護

Hello there, ('ω')ノ

🧠 クリックジャッキングとは?

クリックジャッキング(Clickjacking)は、ユーザーが意図せずに別の操作を実行させられる攻撃手法です。

この攻撃では、攻撃者が透明なiframeを使用して、ユーザーがクリックすると思っている要素の上に、実際には別のウェブサイトの重要なボタン(例えば「アカウント削除」ボタン)を配置します。

ユーザーが「クリックして賞品を獲得」と表示されたボタンをクリックすると、実際には「アカウント削除」ボタンがクリックされ、アカウントが削除されてしまう可能性があります。

この攻撃は、CSRFトークンによる保護があっても、ユーザーが正規のセッションでログインしている状態であれば、攻撃が成功する可能性があります。


🛠️ ラボの目的

このラボでは、クリックジャッキング攻撃を利用して、被害者のアカウントを削除することが目的です。

被害者は、Chromeブラウザを使用しており、「click」という文字が表示された要素をクリックします。


🧪 手順

  1. 提供された資格情報(ユーザー名:wiener、パスワード:peter)を使用して、ターゲットのウェブサイトにログインします。

  2. 「Exploit server」にアクセスし、以下のHTMLコードを「Body」セクションに貼り付けます。

   <style>
       iframe {
           position: relative;
           width: 700px;
           height: 500px;
           opacity: 0.0001;
           z-index: 2;
       }
       div {
           position: absolute;
           top: 300px;
           left: 60px;
           z-index: 1;
       }
   </style>
   <div>Click me</div>
   <iframe src="https://YOUR-LAB-ID.web-security-academy.net/my-account"></iframe>

YOUR-LAB-ID を、実際のラボのIDに置き換えてください。

  1. 「Store」をクリックして保存し、「View exploit」をクリックして表示します。

  2. 「Click me」というテキストが表示されている位置にマウスカーソルを合わせ、カーソルが手の形に変わることを確認します。

    このとき、透明なiframe内の「アカウント削除」ボタンと「Click me」テキストが重なっている必要があります。

    位置がずれている場合は、topleftの値を調整して、正確に重なるようにしてください。

  3. 位置が正しく調整できたら、「Deliver exploit to victim」をクリックして、被害者に攻撃を仕掛けます。

  4. 被害者が「Click me」テキストをクリックすると、実際には透明なiframe内の「アカウント削除」ボタンがクリックされ、アカウントが削除されます。


🎯 ポイントと注意点

  • 透明なiframeのopacityを0.0001に設定することで、ユーザーには見えないようにします。

  • z-indexを使用して、iframeを前面に配置し、ユーザーのクリックをキャプチャします。

  • topleftの値を調整して、iframe内の「アカウント削除」ボタンと「Click me」テキストが正確に重なるようにします。

  • 被害者がクリックする要素には、「Click me」などの誘導的なテキストを使用します。

  • 攻撃が成功するためには、被害者がターゲットのウェブサイトにログインしている必要があります。


✅ まとめ

このラボでは、クリックジャッキング攻撃を利用して、被害者のアカウントを削除する方法を学びました。

CSRFトークンによる保護があっても、ユーザーが正規のセッションでログインしている状態であれば、クリックジャッキング攻撃が成功する可能性があります。

このような攻撃を防ぐためには、X-Frame-OptionsヘッダーやContent-Security-Policyヘッダーを使用して、ウェブページがiframe内で表示されることを防ぐ必要があります。

また、ユーザーインターフェースの設計においても、重要な操作には確認ダイアログを表示するなどの対策が有効です。

Best regards, (^^ゞ