Upload
net-kanayan
View
500
Download
5
Embed Size (px)
Citation preview
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’ ANDpassword = ‘’ 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