Hello there, ('ω')ノ
🧠 クリックジャッキングとは?
クリックジャッキング(Clickjacking)は、ユーザーが意図せずに別の操作を実行させられる攻撃手法です。
この攻撃では、攻撃者が透明なiframeを使用して、ユーザーがクリックすると思っている要素の上に、実際には別のウェブサイトの重要なボタン(例えば「アカウント削除」ボタン)を配置します。
ユーザーが「クリックして賞品を獲得」と表示されたボタンをクリックすると、実際には「アカウント削除」ボタンがクリックされ、アカウントが削除されてしまう可能性があります。
この攻撃は、CSRFトークンによる保護があっても、ユーザーが正規のセッションでログインしている状態であれば、攻撃が成功する可能性があります。
🛠️ ラボの目的
このラボでは、クリックジャッキング攻撃を利用して、被害者のアカウントを削除することが目的です。
被害者は、Chromeブラウザを使用しており、「click」という文字が表示された要素をクリックします。
🧪 手順
提供された資格情報(ユーザー名:
wiener
、パスワード:peter
)を使用して、ターゲットのウェブサイトにログインします。「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に置き換えてください。
「Store」をクリックして保存し、「View exploit」をクリックして表示します。
「Click me」というテキストが表示されている位置にマウスカーソルを合わせ、カーソルが手の形に変わることを確認します。
このとき、透明なiframe内の「アカウント削除」ボタンと「Click me」テキストが重なっている必要があります。
位置がずれている場合は、
top
やleft
の値を調整して、正確に重なるようにしてください。位置が正しく調整できたら、「Deliver exploit to victim」をクリックして、被害者に攻撃を仕掛けます。
被害者が「Click me」テキストをクリックすると、実際には透明なiframe内の「アカウント削除」ボタンがクリックされ、アカウントが削除されます。
🎯 ポイントと注意点
透明なiframeの
opacity
を0.0001に設定することで、ユーザーには見えないようにします。z-index
を使用して、iframeを前面に配置し、ユーザーのクリックをキャプチャします。top
やleft
の値を調整して、iframe内の「アカウント削除」ボタンと「Click me」テキストが正確に重なるようにします。被害者がクリックする要素には、「Click me」などの誘導的なテキストを使用します。
攻撃が成功するためには、被害者がターゲットのウェブサイトにログインしている必要があります。
✅ まとめ
このラボでは、クリックジャッキング攻撃を利用して、被害者のアカウントを削除する方法を学びました。
CSRFトークンによる保護があっても、ユーザーが正規のセッションでログインしている状態であれば、クリックジャッキング攻撃が成功する可能性があります。
このような攻撃を防ぐためには、X-Frame-Options
ヘッダーやContent-Security-Policy
ヘッダーを使用して、ウェブページがiframe内で表示されることを防ぐ必要があります。
また、ユーザーインターフェースの設計においても、重要な操作には確認ダイアログを表示するなどの対策が有効です。
Best regards, (^^ゞ