クリックジャッキング

クリックジャッキング攻撃

クリックジャッキング(Click Jacking)とは

クリックジャッキングとは、Webページコンテンツ上に透明化した攻撃サイトのコンテンツを配置することで、利用者が気づかせずに攻撃サイトで不正操作させる攻撃手法です。

主な手法としては、利用者がアクセスしているWebサイトに不可視のボタンを配置し、そのボタンをユーザーに押させることが挙げられます。


クリックジャッキングの仕組み

HTMLでは、iframeタグなどを用いることでWebページ内に別サイトのWebページをレイヤ(層)として埋め込むことができます。

レイヤを透過指定することで、正常なWebページの上層に別サイトのWebページを透明化して密かに埋め込むことが可能になります。

このようなWebページ上で操作を行うと、利用者は気づかないまま別サイトのWebページ上で操作を行うこととなります。


クリックジャッキングの特徴

クリックジャッキングの特徴として以下2点が挙げられます。

  • ブラウザのJavaScriptを無効にしていても影響を受ける。
  • 標的サイトの任意の要素に対して複数回クリックをさせる(画面遷移を含む)ことが可能です。

クリックジャッキングの実行例

ボタンを配置したWEBページ(main.html)の上に、同一位置にボタンを配置した透明なWEBページ(hyde.html)を重ねます。

正規ページ(main.html)をブラウザで開くと、正規ページのみの内容が表示されますが、ページ上のボタンをクリックしようとすると、不正ページ(hyde.html)のボタンをクリックされてしまいます。

透明なクリックボタンを重ねることで、不正なスクリプトを実行させるというクリックジャッキングの実行例です。


CSSの準備

透明なWEBページを作成するために、CSSを用意します。

複数のブラウザで要素を透明にするための設定を列挙します。

また、ボタン(WEBページ)を適切に重ねるためにボタンの位置情報を指定します。


下記内容を記述した「main.css」を用意します。


.target {
    /* 位置情報の指定 */
    position: absolute;
    top: 0px;
    left: 0px;

    /* 要素を透明化する */
    opacity: 0.0;                     /* firefox, chrome対応 */
    filter: alpha(opacity=00);        /* ie8以下を対応 */
    -ms-filter: "alpha(opacity=00)";  /* ie 8 */
    -moz-opacity: 0.0;                /* Netscape対応  */
    -khtml-opacity:0.0;               /* Safari対応 */
    overflow: hidden;                 /* はみ出し部分を隠す */
    z-index: 9;                       /* 重なり順序を指定 */
}

※確認のために「opacity: 0.5;」と設定すれば、半透明のボタンが重なっていることが目視できます。


不正ページ(透明ページ)の作成

ボタンのみが存在する単純なWEBページを作成します。

ボタンをクリックすると、「Click Jacking!」というアラートダイアログが表示されます。


下記内容を記述した「hyde.html」を用意します。


<html>
  <head>
    <link href="./main.css" type="text/css" rel="stylesheet"/>
    <title>ClickJack</title>
  </head>
  <body>
    <input type="button" value="ClickJack" onclick="alert('Click Jacking!')">
  </body>
</html>

正規ページの作成

ボタンのみが存在する単純なWEBページを作成します。

ボタンをクリックすると、「MainDummy」というアラートダイアログが表示されます。

「iframe」を記述して、透明なWEBページを重なるように配置します。


下記内容を記述した「main.html」を用意します。


<html>
  <head>
    <link href="./main.css" type="text/css" rel="stylesheet"/>
    <title>MainDummy</title>
  </head>
  
  <body>
    <input type="button" value="Click me!" onclick="alert('MainDummy')">
    <iframe frameborder="0" scrolling="no" src="./hyde.html" id="target" class="target"></iframe>
    <br>
  </body>
</html>

クリックジャッキングの応用

  • 外部サイトへ誘導する
    • Webブラウザの画面上いっぱいとなる透明ページを配置することで、ブラウザから画面をクリックしたユーザを任意のWEBサイトへ誘導することができます。
    • WEBアフィリエイト広告の上に透明なページを配置することで、ユーザに怪しまれずに(もしくは気づかれることなく)任意のWEBサイトへ誘導することができます。
  • スクリプトの実行内容を工夫する。
    • 外部のWEBサイトに攻撃を仕掛けるスクリプトを用意することで、ユーザが行うクリック操作を標的サイトに対する攻撃とすることが可能です。

関連ページ