1.PCの遠隔操作
他人のPCを遠隔操作して掲示板に投稿することを「なりすまし投稿」という
2種類の手口を紹介する、各々対策を講じておく
2.CSRF(Cross site request forgeries)
クロス・サイト・リクエスト・フォージェリと言う
CSRF対策を施していない投稿サイトに利用者のPCから勝手に投稿される
悪意のある記事が投稿されることが多い
予期しない結果
掲示板に意図しない書き込みをさせられる
オンラインショップで買い物をさせられる
ルーターや無線LAN等の情報機器の設定を勝手に変更される
感染の流れ
・攻撃者が誘導用のページを用意する
・誘導用のページをログインしたままで閲覧する
・攻撃用ページにリクエストが送信され、攻撃者の意図した操作が行われる
第一段階
攻撃者は投稿文章の内容等を全て用意して、罠のページを作成する
事前に目的のサイトの「投稿」ロジックを用意しクリックされるのを待つ
第二段階
利用者が投稿サイトにログインする
利用者が投稿を行う
利用者はログオフせずに繋いだままにしておく
第三段階
利用者が罠のサイトをアクセスする
知らずにクリックしてしまうと
「第一段階」で用意された文章が投稿される
注意点
例としてログインしてからの「投稿」サイトを上げたが
ログインせずに「投稿」できるサイトでも「なりすまし投稿」ができる
「なりすまし投稿」と言われる所以
実際の「投稿」は攻撃者の存在がばれる事を恐れて
罠のページが存在するサーバ上では行わない
多くの攻撃者はJava Scriptを使って「ローカルPC」上から投稿させる
Java Scriptが「ローカルPC」上で動くといった
プログラム言語の特徴を利用して上手に攻撃者の存在を隠してしまう
2.XSS(Cross site scripting)
クロス・サイト・スクリプティング」と言う
XSS対策を施していない投稿サイトで勝手な投稿が行われる
悪意のある記事内容に摩り替えられる
予期しない結果
最初に誘導用ページにアクセスした人が意図しないうちに
意図しない内容で掲示板に書き込みされる
感染の流れ
最初にアクセスされた誘導用ページのインラインフレーム内で
攻撃用ページが呼び出される
縦1 ピクセル、横1ピクセルのインラインフレーム内で行われるため、
被害者は全く気が付かない
攻撃用ページのonload属性により、ページが読込まれるのと同時に
掲示板への書き込みフォームの送信ボタンが自動的に押され
フォームで指定された文言で掲示板に書き込みが行われる
第一段階
攻撃者は「悪意のあるWebサイト」を用意する
ターゲットとなる脆弱なサイトへのリンクを設置した罠サイトを設ける
リンクのパラメータ部分に悪意のあるスクリプトを埋め込んでおく
第二段階
利用者が知らずに「悪意のあるWebサイト」にアクセスし、クリックすると
悪意のあるスクリプトを持ったまま新たなページを開く
第三段階
悪意のあるスクリプトを持ったまま「投稿」ページが開く
XSSへの対応が施されたサイトだとスクリプトはエラーになる
XSSへの対応が施されていなければ
悪意のあるスクリプトを埋め込んで本物の「投稿」ページを表示する
利用者のPC上で悪意のあるスクリプトが実行されます
エラーにならなければ、利用者の知らないうちに全て実行される
注意点
元々XSSへの対応(特殊文字のチエック)が施されていないサイトだと
直接「投稿」文章にスクリプトを混入させることができる
自由に「悪意のあるスクリプト」が動くので、
サイトのクッキーが詐取され、なりすましが行われる
本人になりすまして色々なサイトにアクセスされる
ターゲットサイトのページ内容を不正に書き換えられるる
入力した情報を攻撃者へ送信される(個人情報の漏洩)
SNSに攻撃者の指定した内容が書き込まれる
掲示板への書き込みサンプル
誘導用のページとして用意する
<!DOCTYPE html>
<html lang="ja">
<head>
<title>誘導用のページ</title>
</head>
<body>
<p>ようこそいらっしゃいました。</p>
<iframe width="1" height="1" src="attack.html"></iframe>
</body>
</html>
<!DOCTYPE html>
<html lang="ja">
<head>
<title>攻撃用のページ</title>
</head>
<body onload="document.attackform.submit();">
<form name="attackform" method="post" action="http://example.com/bbs/register.cgi">
<input type="hidden" name="title" value="攻撃者が指定した題名">
<input type="hidden" name="article" value="攻撃者が指定した本文">
<input type="submit" value="送信">
</form>
</body>
</html>