Basic Vulnerability
@kanayannet
1
仕事: Perl,Ruby,HTML,JS...etc
趣味: badminton,kayak,ski
自己紹介
#gunmaweb,#guruby,#tkbjs
名前: 金澤 宏昭
2
日本語に訳すと…基本的な脆弱性
Basic Vulnerability とは..
3
最近、ID、パスワード漏洩 や サイト改ざん
のニュースが多くなっている。
自分の作ったアプリは大丈夫なのか?
と心配になり、今回、発表資料を整理する中
で自分の頭の中も整理しよう。
なぜ、話そうと思ったのか?
4
1. サービス内容の抜け道を利用した手口
2. アプリケーションの挙動を利用した手口
3. サーバの抜け穴(設定漏れなど)
Web の脆弱性には大きく3種類に分類
されると思います。
5
今回は「1」と「2」について
話していきます。
6
※これから話す「1」は現在、解消
もしくは対処方法があります。
7
「友達の助けを借りる」機能
アカウントをロックされた場合、友人3人に
セキュリティコードを取得してもらって入力すれ
ば利用を再開できる「友達の助けを借りる」機能
(パスワードのリセットが可能)
1. サービス内容の抜け道を利用した手口
例: FaceBook
8
攻撃者が facebook でなりすましアカウントを利
用して友達申請し、相手が承認してしまうと…
「友達の助けを借りる」機能を利用し、3つのな
りすましアカウントに「セキュリティコード」を
取得させて、パスワードの変更し相手のアカウン
トを乗っ取る。
1. サービス内容の抜け道を利用した手口
例: FaceBook
9
1.「(偽の)友達の助けを借りる」を利用する
2.「セキュリティコード」を取得する
3. 相手のアカウントのパスワード
1. サービス内容の抜け道を利用した手口
例: FaceBook(まとめ)
10
攻撃者がAmazonに連絡し、アカウントに新しい
クレジットカード番号を登録したいと伝え、デタ
ラメな番号を登録してもらう(氏名、請求書送付先
住所、メールアドレスをamazonは聞いてくるの
で答える)。
1. サービス内容の抜け道を利用した手口
例:AMAZON
11
一度電話を切って、その後、再度amazonに連絡
を行い、「アカウントにログインできなくなっ
た」旨を伝える。
今度は氏名、請求書送付先住所、クレジットカー
ド番号を聞かれるので、先ほどのクレジットカー
ド番号を答える。これで指定した新しいメールア
ドレスをアカウントに追加して貰える。
あとは…ご想像の通り。
1. サービス内容の抜け道を利用した手口
例:AMAZON
12
1. Amazonに連絡し、アカウントに新しいクレジ
ットカード番号を追加する
2. 再度連絡し新しいメールアドレスをアカウント
に追加させる(「1」 のクレジットカード番号で追
加可能)
3. 新しいメールアドレスを使い..パスワード変更
や注文など出来てしまう。
1. サービス内容の抜け道を利用した手口
例:AMAZON(まとめ)
13
1. サービス内容の抜け道を利用した手口
「ここまで確認を取れば教えても大丈夫だろう。」
という安易な考えでサービスを作ってしまうと陥り
やすい抜け道なのかもしれません。
14
2. アプリケーションの挙動を利用した手口
15
サイト間を横断して悪意のあるスク
リプトを注入させる行為
2. アプリケーションの挙動を利用した手口
例:クロスサイトスクリプティング
16
2. アプリケーションの挙動を利用した手口
例:クロスサイトスクリプティング
<?php
$target = $_POST[ target ];
?>
検索ワード: <php? echo $target; ?>
Form の入力を受け取る script(php)
17
2. アプリケーションの挙動を利用した手口
例:クロスサイトスクリプティング
検査方法:
入力フォームに
「<script>alert('注意!!');</script>」
と打ちブラウザ上に警告ダイアログ
が表示されたらアウト
18
2. アプリケーションの挙動を利用した手口
例:クロスサイトスクリプティング
alert ダイアログなら被害はないが、
任意のページに遷移させる location.href
や
cookie の値を ajax + jsonp で外部サイト
に飛ばされたら...
19
2. アプリケーションの挙動を利用した手口
例:injection
閲覧者からのデータの入力を利用し、プログ
ラムに与えるパラメータにOS や SQLに対す
る命令文を紛れ込ませて不正に操作する
20
2. アプリケーションの挙動を利用した手口
例:OS injection
$target = $_POST[ target ];
system( tar zcvf ./user/$target );
$target に 「¦rm -rf *」と入れると
php の実行権限で消せるファイルやディレクトリを
消されてしまう。
21
2. アプリケーションの挙動を利用した手口
例:SQL injection
SELECT uid FROM user
WHERE uid = ‘$uid’ AND
password = ‘$password’
$uid = “kanazawa”;
$password = “’ OR ‘A’=‘A”;
と入れると次ページのSQL が実行
22
2. アプリケーションの挙動を利用した手口
例:SQL injection
SELECT uid FROM user
WHERE uid = ’kanazawa’ AND
password = ‘’ or ’A’ = ‘A’
パスワードが違ってもログイン
出来てしまう。
23
2. アプリケーションの挙動を利用した手口
例:クロスサイトリクエストフォージェリ
Webサイトにスクリプトやリダイレクト
を仕込むことによって、閲覧者に意図せ
ず別のWebサイト上で何らかの操作(書き
込み や 買い物)を行わせる攻撃手法。
24
2. アプリケーションの挙動を利用した手口
例:クロスサイトリクエストフォージェリ
1. 攻撃者が用意したサーバに 外部サイト(ユーザ
が利用する)へ自動的に飛ばすように仕掛けておく
2. 「1」の仕掛けの中に 買い物 や 書き込み時
の引数と同じものを付けておく
3. あとはユーザが攻撃者が用意したサイトに来る
のを待つ
25
2. アプリケーションの挙動を利用した手口
例:クロスサイトリクエストフォージェリ
防ぐには外部サイトからの遷移を防ぐようアプリ
ケーション側でガードさせたり、ログイン済みで
あったとしても、必ずパスワード入力させたりす
る必要がある。
26
2. アプリケーションの挙動を利用した手口
例:ブルートフォースアタック
暗号解読方法のひとつで、可能な組み
合わせを全て試すやり方。
(総当たり攻撃)
27
2. アプリケーションの挙動を利用した手口
例:ブルートフォースアタック
1. 連続でパスワードをミスしたらブロックする
2. パスワードを長く複雑なものにする
3. ランダムの文字画像->入力させる
(CAPTCHA)
防御方法
28
まとめ
どれも、丁寧に作れば防げる手段...
だけど、長々と開発していると忘れがち...
29
ご清聴ありがとうございました!
30

Basic vulnerability