自分でできるWebアプリケーション脆弱性診断 - デブサミ2010

44
Developers Summit 2010 Developers Summit 2010 上上 上 株株株株株株株株株株 株株株株株 19-E-3 上上上上上上 Web 上上上上上上上上 上上上上上

description

 

Transcript of 自分でできるWebアプリケーション脆弱性診断 - デブサミ2010

Page 1: 自分でできるWebアプリケーション脆弱性診断 - デブサミ2010

Developers Summit 2010 Developers Summit 2010

上野 宣株式会社トライコーダ代表取締役

19-E-3

自分でできるWeb アプリケーション脆弱性診断

Page 2: 自分でできるWebアプリケーション脆弱性診断 - デブサミ2010

Copyright©2010 Tricorder Co.Ltd. All rights reserved. 2

プロフィール• 上野 宣(うえの・せん)

– 京都市生まれ、幼少期は実家がパソコンショップ、高専でロボコンに熱中し、豊橋技科大でインターネットにハマり、奈良先端科学技術大学院大学にて山口英教授の下で情報セキュリティを専攻

– EC開発ベンチャー企業で創業メンバー、東証マザーズ上場などを経験を経て、2006年6月に株式会社トライコーダを設立

• 株式会社トライコーダ 代表取締役– 情報セキュリティ教育– ネットワークシステム/Webアプリケーション脆弱性診断– http://www.tricorder.jp/

• 独立行政法人情報処理推進機構 (IPA)セキュリティセンター研究員• セキュリティ&プログラミングキャンプ講師• 情報セキュリティ専門誌 ScanNetSecurity 編集長

sen_u

Page 3: 自分でできるWebアプリケーション脆弱性診断 - デブサミ2010

Copyright©2010 Tricorder Co.Ltd. All rights reserved. 3

著書、連載など• 今夜わかるTCP/IP• 今夜わかるHTTP• 今夜わかるメールプロトコル

SMTP/POP3/IMAP4• ネットでライフハック―仕事をらくらく片

付ける超便利 !ウェブツール• 平成22年度情報セキュリティスペシャリス

ト 試験によくでる午前・午後問題集、• ハッカーになるための必読書103選• アクセス探偵 IHARA―エンターテイメント

情報セキュリティコミック• 実践企業情報ネットワークの保護管理

セキュリティの意識を具現化するためのガイドライン

• @ IT、HackerJapanなどで連載中• 著書、連載、その他多数

Page 4: 自分でできるWebアプリケーション脆弱性診断 - デブサミ2010

Web アプリケーション脆弱性診断とは

Copyright©2010 Tricorder Co.Ltd. All rights reserved. 4

Page 5: 自分でできるWebアプリケーション脆弱性診断 - デブサミ2010

脆弱性診断とは

• 脆弱性診断– 対象となる Web アプリケーションに対して、攻

撃者視点からセキュリティ上の問題を発見し報告– セキュリティテスト

• ペネトレーションテストとの違い– さまざまな手を尽くして管理者権限を奪いに行く

のがペネトレーションテスト– 脆弱性診断はテストケースに基づくテスト

• どちらも多くは専門業者に委託している– もしくは脆弱性スキャナーによる診断

Copyright©2010 Tricorder Co.Ltd. All rights reserved. 5

Page 6: 自分でできるWebアプリケーション脆弱性診断 - デブサミ2010

自分 ( 自社 ) でできない理由

• テスト方法がわからない• テスト仕様書を作れない• どこを診断して良いかわからない• 脆弱性判定の基準が判らない• 診断結果報告書の書き方が判らない• 自社の診断を信用してもらえない

Copyright©2010 Tricorder Co.Ltd. All rights reserved. 6

Page 7: 自分でできるWebアプリケーション脆弱性診断 - デブサミ2010

診断の基準どのようなテストをすればよいか?

Copyright©2010 Tricorder Co.Ltd. All rights reserved. 7

Page 8: 自分でできるWebアプリケーション脆弱性診断 - デブサミ2010

LASDEC『ウェブ健康診断』の診断仕様を活用• 財団法人地方自治情報センター( LASDEC )

– 地方公共団体の情報セキュリティ対策などを支援• ウェブ健康診断

– 精密検査ではなく定期健康診断– 定型化されているため低価格での実施が可能

• 診断仕様が公開されている– 診断仕様は有識者が検討し定めたもの

• 企業などがそのまま採用しても申し分のない内容

Copyright©2010 Tricorder Co.Ltd. All rights reserved. 8

http://www.lasdec.nippon-net.ne.jp/cms/12,1284.html

Page 9: 自分でできるWebアプリケーション脆弱性診断 - デブサミ2010

Copyright©2010 Tricorder Co.Ltd. All rights reserved. 9

http://www.lasdec.nippon-net.ne.jp/cms/12,1284.html

Page 10: 自分でできるWebアプリケーション脆弱性診断 - デブサミ2010

診断仕様の内容

• 診断対象脆弱性(診断項目)• 危険度基準• 総合判定基準• 診断時に利用する診断項目毎の検出パ

ターン (目安 )• 脆弱性有無の判定基準• 診断対象画面(機能)とその定義

Copyright©2010 Tricorder Co.Ltd. All rights reserved. 10

Page 11: 自分でできるWebアプリケーション脆弱性診断 - デブサミ2010

診断項目

• SQL インジェクション• クロスサイトスクリプ

ティング (XSS)• クロスサイト・リクエ

スト・フォージェリ(CSRF)

• OS コマンドインジェクション

• ディレクトリ・リスティング

• メールヘッダインジェクション

• パストラバーサル• 意図しないリダイレク

ト• HTTPヘッダインジェク

ション• 認証• セッション管理の不備• アクセス制御の不備、欠落

Copyright©2010 Tricorder Co.Ltd. All rights reserved. 11

選定理由:危険性が高く、検出数が多く最近問題となるケースが多いもの

Page 12: 自分でできるWebアプリケーション脆弱性診断 - デブサミ2010

危険度の判定診断項目 危険度

SQL インジェクション 高

クロスサイトスクリプティング (XSS) 中

クロスサイト・リクエスト・フォージェリ (CSRF) 中

OS コマンドインジェクション 高

ディレクトリ・リスティング 低~高

メールヘッダインジェクション 中

パストラバーサル 高

意図しないリダイレクト 中

HTTPヘッダインジェクション 中

認証 低~中

セッション管理の不備 低~高

アクセス制御の不備、欠落 高Copyright©2010 Tricorder Co.Ltd. All rights reserved. 12

Page 13: 自分でできるWebアプリケーション脆弱性診断 - デブサミ2010

危険度• 危険度:高

– 被害者ユーザの関与がなくても攻撃者が直接アプリケーションに対して攻撃可能である能動的な脆弱性。

– 攻撃を受けると、大量の情報漏洩や改ざんの被害を生じる可能性がある。

• 危険度:中– 攻撃成功には被害者ユーザの関与(攻撃者の罠のリンクをクリック

する等)が必要である受動的な脆弱性。– もしくは、能動的な脆弱性であっても大量の情報漏洩や改竄にはつ

ながりにくいもの。• 危険度:低

– 攻撃成功の確率が低い、もしくは攻撃が成功しても被害が軽微であると考えられる脆弱性。ただし被害に遭う可能性はゼロではない。

Copyright©2010 Tricorder Co.Ltd. All rights reserved. 13

Page 14: 自分でできるWebアプリケーション脆弱性診断 - デブサミ2010

総合判定基準

• 要治療・精密検査–危険度が「高」「中」の脆弱性を検出

• 差し支えない–危険度が「低」の脆弱性のみ発見

• 異常は発見されなかった– 今回の診断で脆弱性が発見されなかった– ただし、診断方法が限定されているので「安全である」ことと同義ではない

Copyright©2010 Tricorder Co.Ltd. All rights reserved. 14

Page 15: 自分でできるWebアプリケーション脆弱性診断 - デブサミ2010

診断に利用する検出パターンと利用基準

• ウェブ健康診断の仕様書には脆弱性ごとに診断方法が記載されている

• 検出パターン• 脆弱性有無の判定基準• 備考

Copyright©2010 Tricorder Co.Ltd. All rights reserved. 15

Page 16: 自分でできるWebアプリケーション脆弱性診断 - デブサミ2010

SQL インジェクション 1

検出パターン

「’」 ( シングルクォート )1個

脆弱性有無の判定基準

エラーになる

備考レスポンスに DBMS 等が出力するエラーメッセージ(例: SQLException 、 Query failed 等)が表示された場合にエラーが発生したと判定します。

Copyright©2010 Tricorder Co.Ltd. All rights reserved. 16

Page 17: 自分でできるWebアプリケーション脆弱性診断 - デブサミ2010

クロスサイト・スクリプティング(XSS) 1検出パターン

「 '>"><hr>」

脆弱性有無の判定基準

エスケープなどされずに出力される

備考レスポンスボディーに検査文字列の文字列がエスケープ等されずに出力されると脆弱と判定します。

Copyright©2010 Tricorder Co.Ltd. All rights reserved. 17

Page 18: 自分でできるWebアプリケーション脆弱性診断 - デブサミ2010

ディレクトリ・リスティング 1

検出パターンURL をディレクトリまでで終端しリクエストする脆弱性有無の判定基準ディレクトリ一覧が表示される。ファイル一覧の表示のみでは「低」危険度重要情報があれば「高」危険度備考URL の末尾のファイル名部分を削除してリクエストを送り、ファイル一覧がレスポンスされるか確認します。 icons 等明らかに無害なものは報告しません。抜き取りにて、一覧ファイル内のバックアップファイル等を探して発見されたものを報告します。

Copyright©2010 Tricorder Co.Ltd. All rights reserved. 18

Page 19: 自分でできるWebアプリケーション脆弱性診断 - デブサミ2010

認証 1

検出パターン

パスワードの max文字数が 8文字以上確保されているか

脆弱性有無の判定基準

8文字未満の場合は指摘

備考

Copyright©2010 Tricorder Co.Ltd. All rights reserved. 19

Page 20: 自分でできるWebアプリケーション脆弱性診断 - デブサミ2010

セッション管理の不備 1

検出パターン

ログインの前後でセッション ID が変化するか

脆弱性有無の判定基準

セッション ID が変わらない場合は指摘

備考

Copyright©2010 Tricorder Co.Ltd. All rights reserved. 20

Page 21: 自分でできるWebアプリケーション脆弱性診断 - デブサミ2010

Copyright©2010 Tricorder Co.Ltd. All rights reserved. 21

Page 22: 自分でできるWebアプリケーション脆弱性診断 - デブサミ2010

Copyright©2010 Tricorder Co.Ltd. All rights reserved. 22

Page 23: 自分でできるWebアプリケーション脆弱性診断 - デブサミ2010

Copyright©2010 Tricorder Co.Ltd. All rights reserved. 23

Page 24: 自分でできるWebアプリケーション脆弱性診断 - デブサミ2010

Copyright©2010 Tricorder Co.Ltd. All rights reserved. 24

Page 25: 自分でできるWebアプリケーション脆弱性診断 - デブサミ2010

Copyright©2010 Tricorder Co.Ltd. All rights reserved. 25

Page 26: 自分でできるWebアプリケーション脆弱性診断 - デブサミ2010

診断の実施

Copyright©2010 Tricorder Co.Ltd. All rights reserved. 26

Page 27: 自分でできるWebアプリケーション脆弱性診断 - デブサミ2010

診断手順

1. 診断対象リストの作成2. 仕様に沿って診断開始3. レポート作成

Copyright©2010 Tricorder Co.Ltd. All rights reserved. 27

Page 28: 自分でできるWebアプリケーション脆弱性診断 - デブサミ2010

診断対象リストの作成

• 全画面の診断ではない• 診断対象となる画面 ( 機能 ) を限定• 最低限実施する診断項目を設定

Copyright©2010 Tricorder Co.Ltd. All rights reserved. 28

Page 29: 自分でできるWebアプリケーション脆弱性診断 - デブサミ2010

診断対象画面

• ログイン• ログアウト• DB アクセス• 入力内容確認• エラー• ファイル名

• Cookie 発行• リダイレクト• パスワード変更• DB更新• メール送信• アクセス制御あり

Copyright©2010 Tricorder Co.Ltd. All rights reserved. 29

Page 30: 自分でできるWebアプリケーション脆弱性診断 - デブサミ2010

Copyright©2010 Tricorder Co.Ltd. All rights reserved. 30

最低限実施する診断項目 (1)画面名称 最低限実施する診断項目

ログイン (H) 意図しないリダイレクト(J) 認証(K) セッション管理不備

ログアウト (K) セッション管理不備DB アクセス (A) SQL インジェクション

入力内容確認 (B) クロスサイト・スクリプティング

エラー (B) クロスサイト・スクリプティング

ファイル名 (D) OS コマンド・インジェクション(G) パストラバーサル

Page 31: 自分でできるWebアプリケーション脆弱性診断 - デブサミ2010

Copyright©2010 Tricorder Co.Ltd. All rights reserved. 31

最低限実施する診断項目 (2)画面名称 最低限実施する診断項目

Cookie 発行 (I) HTTPヘッダ・インジェクション

リダイレクト (I) HTTPヘッダ・インジェクション

パスワード変更 (C) クロスサイト・リクエスト・フォージェリ

DB更新 (C) クロスサイト・リクエスト・フォージェリ

メール送信 (C) クロスサイト・リクエスト・フォージェリ(D) OS コマンド・インジェクション(F) メールヘッダ・インジェクション

アクセス制御あり (L) アクセス制御不備

Page 32: 自分でできるWebアプリケーション脆弱性診断 - デブサミ2010

仕様に沿って診断開始• インジェクション系• パラメーターに値を渡してGET/POSTする

– SQLインジェクション、クロスサイトスクリプティング (XSS)– クロスサイト・リクエスト・フォージェリ (CSRF)– OSコマンドインジェクション、メールヘッダインジェクション– パストラバーサル、意図しないリダイレクト– HTTPヘッダインジェクション

• それ以外• 診断仕様に従って内容を確認したり、値を変更する

– ディレクトリ・リスティング– セッション管理の不備– 認証– アクセス制御の不備、欠落

Copyright©2010 Tricorder Co.Ltd. All rights reserved. 32

Page 33: 自分でできるWebアプリケーション脆弱性診断 - デブサミ2010

インジェクション系の診断には補助ツールを使用• ブラウザ単体でも可能だが、インジェク

ション系は補助ツールを使うと効率がよい– hidden タグやHTTPヘッダーへの入力– 繰り返し値を入力するなど

• Proxy系補助ツールがオススメ– Burp Suite

• http://portswigger.net/suite/

– WebScarab• http://www.owasp.org/index.php/

Category:OWASP_WebScarab_Project

Copyright©2010 Tricorder Co.Ltd. All rights reserved. 33

Page 34: 自分でできるWebアプリケーション脆弱性診断 - デブサミ2010

Proxy系補助ツール

Copyright©2010 Tricorder Co.Ltd. All rights reserved. 34

http://........

Browser

ショッピングサイト

WebサーバーProxy系補助ツールWeb ブラウザ

Page 35: 自分でできるWebアプリケーション脆弱性診断 - デブサミ2010

Burp Suite

Copyright©2010 Tricorder Co.Ltd. All rights reserved. 35

Page 36: 自分でできるWebアプリケーション脆弱性診断 - デブサミ2010

練習台にはやられ Web アプリケーション

Copyright©2010 Tricorder Co.Ltd. All rights reserved. 36

「わざと脆弱性を持たせた Web アプリ」で練習を - @ IThttp://www.atmarkit.co.jp/fsecurity/column/ueno/59.html

Page 37: 自分でできるWebアプリケーション脆弱性診断 - デブサミ2010

クロスサイト・スクリプティング(XSS) 1検出パターン

「 '>"><hr>」

脆弱性有無の判定基準

エスケープなどされずに出力される

備考レスポンスボディーに検査文字列の文字列がエスケープ等されずに出力されると脆弱と判定します。

Copyright©2010 Tricorder Co.Ltd. All rights reserved. 37

Page 38: 自分でできるWebアプリケーション脆弱性診断 - デブサミ2010

Copyright©2010 Tricorder Co.Ltd. All rights reserved. 38

Page 39: 自分でできるWebアプリケーション脆弱性診断 - デブサミ2010

診断レポートの書き方

Copyright©2010 Tricorder Co.Ltd. All rights reserved. 39

Page 40: 自分でできるWebアプリケーション脆弱性診断 - デブサミ2010

診断レポートの書き方

診断箇所及び診断実施項目 (Web アプリケーション )

機能№

          診断項目診断箇所

(A) SQL インジェクション

(B) XSS

( C) CSRF

(D) OS コマンド・インジェクション

(E) ディレクトリ・リスティング

(F) メールヘッダ・インジェクション

(G) パストラバーサル

(H) 意図しないリダイレクト

(I) HTTPヘッダインジェクション

(J) 認証

(K) セッション管理の不備

(L) ア制クセス

御の不備、欠落

① ログイン √ √ √         √        ② ログアウト             √          ③ 個人情報入力                        

④個人情報入力確認

                √      

⑤ 個人情報登録                   √    

⑥パスワード変更         √         √ √  

⑦ 問い合わせ                     √  ⑧ 貸出履歴表示                       √⑨ サンプル表示       √                ⑩ エラー           √            

Copyright©2010 Tricorder Co.Ltd. All rights reserved. 40

Page 41: 自分でできるWebアプリケーション脆弱性診断 - デブサミ2010

Web アプリケーション脆弱性診断後の対応

Copyright©2010 Tricorder Co.Ltd. All rights reserved. 41

Page 42: 自分でできるWebアプリケーション脆弱性診断 - デブサミ2010

安全な Webサイトを作るためには

• IPA『安全な Webサイトの作り方 改訂第4版』– http://www.ipa.go.jp/security/vuln/

websecurity.html

• 発注者のための Web システム/ Web アプリケーションセキュリティ要件書– http://www.tricorder.jp/

security_requirement.html

Copyright©2010 Tricorder Co.Ltd. All rights reserved. 42

Page 43: 自分でできるWebアプリケーション脆弱性診断 - デブサミ2010

Copyright©2010 Tricorder Co.Ltd. All rights reserved. 43

Page 44: 自分でできるWebアプリケーション脆弱性診断 - デブサミ2010

実践講座もあります

• セキュリティ人材育成セミナー~ Web アプリケーション診断編 ~

• 3 月 29日 ( 月 ) 、 30日 (火 )• 主催:サイバーディフェンス研究所

http://www.cyberdefense.jp/

Copyright©2010 Tricorder Co.Ltd. All rights reserved. 44