30
Basic Vulnerability @kanayannet 1

Basic vulnerability

Embed Size (px)

Citation preview

Page 1: Basic vulnerability

Basic Vulnerability@kanayannet

1

Page 2: Basic vulnerability

仕事: Perl,Ruby,HTML,JS...etc趣味: badminton,kayak,ski

自己紹介

#gunmaweb,#guruby,#tkbjs

名前: 金澤 宏昭

2

Page 3: Basic vulnerability

日本語に訳すと…基本的な脆弱性

Basic Vulnerability とは..

3

Page 4: Basic vulnerability

最近、ID、パスワード漏洩 や サイト改ざん のニュースが多くなっている。

自分の作ったアプリは大丈夫なのか?と心配になり、今回、発表資料を整理する中で自分の頭の中も整理しよう。

なぜ、話そうと思ったのか?

4

Page 5: Basic vulnerability

1. サービス内容の抜け道を利用した手口2. アプリケーションの挙動を利用した手口3. サーバの抜け穴(設定漏れなど)

Web の脆弱性には大きく3種類に分類されると思います。

5

Page 6: Basic vulnerability

今回は「1」と「2」について話していきます。

6

Page 7: Basic vulnerability

※これから話す「1」は現在、解消もしくは対処方法があります。

7

Page 8: Basic vulnerability

「友達の助けを借りる」機能

アカウントをロックされた場合、友人3人にセキュリティコードを取得してもらって入力すれば利用を再開できる「友達の助けを借りる」機能(パスワードのリセットが可能)

1. サービス内容の抜け道を利用した手口例: FaceBook

8

Page 9: Basic vulnerability

攻撃者が facebook でなりすましアカウントを利用して友達申請し、相手が承認してしまうと…

「友達の助けを借りる」機能を利用し、3つのなりすましアカウントに「セキュリティコード」を取得させて、パスワードの変更し相手のアカウントを乗っ取る。

1. サービス内容の抜け道を利用した手口例: FaceBook

9

Page 10: Basic vulnerability

1.「(偽の)友達の助けを借りる」を利用する

2.「セキュリティコード」を取得する

3. 相手のアカウントのパスワード

1. サービス内容の抜け道を利用した手口例: FaceBook(まとめ)

10

Page 11: Basic vulnerability

攻撃者がAmazonに連絡し、アカウントに新しいクレジットカード番号を登録したいと伝え、デタラメな番号を登録してもらう(氏名、請求書送付先住所、メールアドレスをamazonは聞いてくるので答える)。

1. サービス内容の抜け道を利用した手口例:AMAZON

11

Page 12: Basic vulnerability

一度電話を切って、その後、再度amazonに連絡を行い、「アカウントにログインできなくなった」旨を伝える。今度は氏名、請求書送付先住所、クレジットカード番号を聞かれるので、先ほどのクレジットカード番号を答える。これで指定した新しいメールアドレスをアカウントに追加して貰える。あとは…ご想像の通り。

1. サービス内容の抜け道を利用した手口例:AMAZON

12

Page 13: Basic vulnerability

1. Amazonに連絡し、アカウントに新しいクレジットカード番号を追加する

2. 再度連絡し新しいメールアドレスをアカウントに追加させる(「1」 のクレジットカード番号で追加可能)

3. 新しいメールアドレスを使い..パスワード変更や注文など出来てしまう。

1. サービス内容の抜け道を利用した手口例:AMAZON(まとめ)

13

Page 14: Basic vulnerability

1. サービス内容の抜け道を利用した手口

「ここまで確認を取れば教えても大丈夫だろう。」

という安易な考えでサービスを作ってしまうと陥りやすい抜け道なのかもしれません。

14

Page 15: Basic vulnerability

2. アプリケーションの挙動を利用した手口

15

Page 16: Basic vulnerability

サイト間を横断して悪意のあるスクリプトを注入させる行為

2. アプリケーションの挙動を利用した手口

例:クロスサイトスクリプティング

16

Page 17: Basic vulnerability

2. アプリケーションの挙動を利用した手口

例:クロスサイトスクリプティング<?php $target = $_POST[‘target’];?>検索ワード: <php? echo $target; ?>

Form の入力を受け取る script(php)

17

Page 18: Basic vulnerability

2. アプリケーションの挙動を利用した手口

例:クロスサイトスクリプティング

検査方法: 入力フォームに「<script>alert('注意!!');</script>」と打ちブラウザ上に警告ダイアログが表示されたらアウト

18

Page 19: Basic vulnerability

2. アプリケーションの挙動を利用した手口

例:クロスサイトスクリプティング

alert ダイアログなら被害はないが、任意のページに遷移させる location.href や cookie の値を ajax + jsonp で外部サイトに飛ばされたら...

19

Page 20: Basic vulnerability

2. アプリケーションの挙動を利用した手口

例:injection

閲覧者からのデータの入力を利用し、プログラムに与えるパラメータにOS や SQLに対する命令文を紛れ込ませて不正に操作する

20

Page 21: Basic vulnerability

2. アプリケーションの挙動を利用した手口

例:OS injection

$target = $_POST[‘target’];system(“tar zcvf ./user/$target”);

$target に 「|rm -rf *」と入れるとphp の実行権限で消せるファイルやディレクトリを消されてしまう。

21

Page 22: Basic vulnerability

2. アプリケーションの挙動を利用した手口

例:SQL injection

SELECT uid FROM user WHERE uid = ‘$uid’ AND password = ‘$password’

$uid = “kanazawa”;$password = “’ OR ‘A’=‘A”;と入れると次ページのSQL が実行

22

Page 23: Basic vulnerability

2. アプリケーションの挙動を利用した手口

例:SQL injection

SELECT uid FROM user WHERE uid = ’kanazawa’ ANDpassword = ‘’ or ’A’ = ‘A’

パスワードが違ってもログイン出来てしまう。

23

Page 24: Basic vulnerability

2. アプリケーションの挙動を利用した手口

例:クロスサイトリクエストフォージェリ

Webサイトにスクリプトやリダイレクトを仕込むことによって、閲覧者に意図せず別のWebサイト上で何らかの操作(書き込み や 買い物)を行わせる攻撃手法。

24

Page 25: Basic vulnerability

2. アプリケーションの挙動を利用した手口

例:クロスサイトリクエストフォージェリ1. 攻撃者が用意したサーバに 外部サイト(ユーザが利用する)へ自動的に飛ばすように仕掛けておく

2. 「1」の仕掛けの中に 買い物 や 書き込み時の引数と同じものを付けておく

3. あとはユーザが攻撃者が用意したサイトに来るのを待つ

25

Page 26: Basic vulnerability

2. アプリケーションの挙動を利用した手口

例:クロスサイトリクエストフォージェリ

防ぐには外部サイトからの遷移を防ぐようアプリケーション側でガードさせたり、ログイン済みであったとしても、必ずパスワード入力させたりする必要がある。

26

Page 27: Basic vulnerability

2. アプリケーションの挙動を利用した手口

例:ブルートフォースアタック

暗号解読方法のひとつで、可能な組み合わせを全て試すやり方。(総当たり攻撃)

27

Page 28: Basic vulnerability

2. アプリケーションの挙動を利用した手口

例:ブルートフォースアタック

1. 連続でパスワードをミスしたらブロックする

2. パスワードを長く複雑なものにする

3. ランダムの文字画像->入力させる(CAPTCHA)

防御方法

28

Page 29: Basic vulnerability

まとめ

どれも、丁寧に作れば防げる手段...だけど、長々と開発していると忘れがち...

29

Page 30: Basic vulnerability

ご清聴ありがとうございました!

30