勉強部屋 > Webアプリケーションの脆弱性検査
脆弱性検査手法
自動検査
自動的に検査コードの送信やレスポンスを解析する
OWASP ZAPやSQLMAP、Fiddlerなどがある
手動検査
リクエストをプロキシとして一旦保留、利用者が送信する
通信監視
リクエストとレスポンスを監視、分析して脆弱性の有無を判定
実験環境
Webサーバ
XAMPP、OWASP BWA、BadStore.net、WebGoat、moth、Hackme
Webクライアント
攻撃者
Burp、Fiddler
脆弱性
SQLインジェクション
問題:SQL文の組み立て方法が不適切
被害:アクセス権限がない人がデータベースの情報を閲覧、改ざんできてしまう
発見方法:
- 入力フォームにキーワードを入力し、URLパラメータにキーワードが含まれているかをチェック
- 入力フォームまたはURLパラメータに「'(シングルコーテーション)」を入力し、エラーが起きるかをチェック
- 入力フォームまたはURLパラメータに「' OR 1=1」や「' union select unhex(hex(version())), \0 - 'x'='x」を入力し、エラーが起きるかをチェック
- SQL文を含めたリクエストを送信し、データベースの内容やバージョン情報が実行されたら脆弱性あり
ディレクトリ・トラバーサル
問題:ファイル名指定の実装が不適切
被害:意図しないディレクトリにファイルを作成されたり、参照されてしまう
発見方法:
- URLに「../../」等の記号を用いてアクセスできるかをチェック
XSS(クロスサイトスクリプティング)
問題:スクリプトやタグが有効な形でHTTPレスポンスに含まれている
被害:ユーザーがスクリプトを含むリンクにアクセスしてしまい、意図しない動作や表示をされてしまう
発見方法:
- 入力データにタグやデータを入力してHTTPリクエストを送信し、HTTPレスポンスに入力データに使用したタグやJavascripが有効な形で含まれているかを確認する
「>'><script>alert('Test')</script>」、「>'><script>alert("Test")</script>」、「>"'><img src="javascript:alert('Test')">」、「" style="background:url(javascript:alert('Test'))" OA="」、「'+alert('Test')+'」
参考
ホワイトハッカー勉強会 初級編@IPA
攻撃者がどうやって脆弱性を見つけ攻撃するのか、仕組みを知れば対策も解る@yohgaki's blog
脆弱性コラム - 第5回@TechMatrix
- @高江洲さん
安全なウェブサイトの作り方@IPA
体系的に学ぶWebアプリケーションの作り方@SBクリエイティブ
XSS Filter Evasion Cheat Sheet@OWASP