More Related Content Similar to 今夜わかるWebアプリケーション脆弱性診断 (OWASP Day 758 / 2018) (20) 今夜わかるWebアプリケーション脆弱性診断 (OWASP Day 758 / 2018)2. PPrrooffiillee:: 上上野野 宣宣 ((SSeenn UUEENNOO))
株株式式会会社社トトラライイココーーダダ 代代表表取取締締役役
奈良先端科学技術大学院大学で情報セキュリティを専攻、2006年にサイバーセキュリティ教育や演習、
脆弱性診断などを提供する株式会社トライコーダを設立
OWASP Japan 代表、情報セキュリティ専門誌『ScanNetSecurity』編集長、
Hardening Project 実行委員、JNSA ISOG-J WG1リーダー、SECCON 実行委員、
情報処理安全確保支援士 集合講習講師、セキュリティキャンプGMなどを務める
(ISC)² 2017年アジア・パシフィック情報セキュリティ・リーダーシップ・アチーブメント(ISLA)を受賞
主主なな著著書書
Webセキュリティ担当者のための脆弱性診断スタート
ガイド - 上野宣が教える情報漏えいを防ぐ技術、
HTTPの教科書、めんどうくさいWebセキュリティ、他多数
(C) 2018 Tricorder Co. Ltd. 2
6. 脆脆弱弱性性診診断断ととペペネネトトレレーーシショョンンテテスストト
• 脆弱性診断
– システムの構成要素単体の脆弱性を探す
– 脆弱性やセキュリティの問題を見つけることが目的
– 網羅的により多くの脆弱性を探す(単一の脆弱性を探す)
– テスト方法を学べば実施可能なテストケースに則ったテスト
• ペネトレーションテスト
– 組織や組織のシステム全体の脆弱性を探す
– 管理者権限の奪取や情報の入手が可能かどうかを検証することが目的
– 複数の脆弱性などを攻撃に利用する(網羅的には探さない)
– 多分野に亘るハッキング能力が必要(特に内部ネットワーク)
– Red Team/Teaming, 脅威ベースペネトレーションテスト(TLPT)
(C) 2018 Tricorder Co. Ltd. 6
9. 各各ラランンククのの詳詳細細
9
SSiillvveerr GGoolldd
対象者像 l 自社の Web アプリケーションの脆
弱性診断(受入れ検査)を行う方
l 脆弱性診断業務の従事を目指す方
(学生など)
l Web アプリケーションの脆弱性診断
(受入れ検査)を行う方
l 脆弱性診断をサービスとして提供する業
務に従事する方
業務と役割 l Gold ランクの者の指示の下、脆弱性
診断を行う
l 自社 IT システムの脆弱性診断を行
う
l 脆弱性診断業務を管理し、診断方針の決
定、作業指示の実施、診断結果の精査お
よび評価を行うことができる
l 脆弱性診断の報告書を作成し、技術的
な説明ができる
期待する
技術水準
l IT システムを診断する上で(最低
限)必要な技術や知識を保有
l 脆弱性診断サービスを提供するのに必要
十分な技術や知識を保有
17. SSQQLL
17
SELECT title,text FROM userTbl WHERE id=123
ステートメント 列名 テーブル名 条件 列名 値
値:
hoge 列名
1234 数値
'hoge' 文字列
count(*), min(x) 関数
max(x), char(x)
条件(WHERE):
a=b , a<>b 同等
a>b 比較
a like '%test%' 文字列検索
a in ('a','b') 抽出
a not in (1,2,3)
(C) 2018 Tricorder Co. Ltd.
20. デデーータタベベーーススのの処処理理
20
bbiidd ddaattee aauutthhoorr iitteemm ffllaagg
1000203503 17/06/23 上杉謙信 塩対応 1
1000203501 12/06/19 上野宣 めんどうくさいWebセキュリティ 1
1000103409 10/06/02 明智光秀 本能寺の変 0
1000093050 05/06/17 上野宣 今夜わかるメールプロトコル 1
1000085771 04/12/09 上野宣 今夜わかるHTTP 1
1000072889 04/12/09 上野宣 今夜わかるTCP/IP 1
1000042384 03/04/21 上野宣 ネットワーク初心者のためのTCP/IP入門 0
bookTbl
bookTblテーブルから、author= 上野宣 かつ flag=1 の行のデータを表示しな
さい
※ flag=0 は絶版書籍
(C) 2018 Tricorder Co. Ltd.
24. SELECT * FROM bookTbl WHERE author = '$q' and flag = 1;
SELECT * FROM bookTbl WHERE author = '上野宣' -- ' and flag = 1;
SSQQLLイインンジジェェククシショョンンのの原原因因
• SQL文の構文を破壊する攻撃
– パラメーターに与えられた値がリテラルの外にはみ出した状態になり、
リテラルの後ろに続くSQL文として解釈される
– 構文を破壊する文字は何か?
– 構文を破壊した後に続く有効な攻撃は何か?
24
authorのリテラル
をはみ出している
(C) 2018 Tricorder Co. Ltd.
29. 自自動動診診断断ツツーールルのの特特長長とと得得意意分分野野
• 最も大きな特長はスピード
• パラメーターに値を挿入して発見するタイプの脆弱性
– SQLインジェクションやクロスサイトスクリプティングなど
• HTMLやCookieなどのセキュリティ機能の不足
– レスポンス内容を見れば判断ができるセキュリティ機能の不足の発見
– CookieのHttpOnly属性、X-Frame-Optionsなど
• ディレクトリやファイルの発見
– リンクされているURL、robots.txtなどからファイルを探索
– crossdomain.xmlなどの特定のアプリケーションのためのファイルの探索
– 辞書機能で、どこからもリンクされていないファイルやディレクトリを探すこ
ともある
(C) 2018 Tricorder Co. Ltd. 29
33. OOWWAASSPP ZZAAPP 動動的的ススキキャャンンがが
検検出出すするる脆脆弱弱性性
• インジェクション
– CRLFインジェクション
• HTTPヘッダーインジェクション/HTTPレスポンス分割攻撃
• メールヘッダーインジェクションは検出しない
– Format String Error
• CWE-134: Use of Externally-Controlled Format String
• フォーマットストリングバグ
– Server Side Code Injection
• CWE-94:Improper Control of Generation of Code
(‘Code Injection’)
• コードインジェクション
– Server Side Include
• CWE-97: Improper Neutralization of Server-Side Includes
(SSI) Within a Web Page
• SSIインジェクション
– SQLインジェクション
– クロスサイトスクリプティング(反射型)
– クロスサイトスクリプティング(持続型)
• バッファオーバーフロー
– CWE-788: Access of Memory Location After End of
Buffer
• パラメータ改ざん
– CWE-472:External Control of Assumed-Immutable
Web Parameter
• リモートOSコマンドインジェクション
– コマンドインジェクション
• クライアント・ブラウザ
– セキュアページのブラウザキャッシュ
• サーバ・セキュリティ
– パストラバーサル
– リモートファイルインクルージョン
• 一般
– Script Active Scan Rules
• 動的スキャン用に作成されたスクリプトの実行
– 外部リダイレクト
• オープンリダイレクト
• 情報収集
– ディレクトリブラウジング
• CWE-548: Information Exposure Through Directory Listing
– ディレクトリリスティング
(C) 2018 Tricorder Co. Ltd. 33
37. 脆脆弱弱性性診診断断のの実実施施手手順順
(C) 2018 Tricorder Co. Ltd. 37
テストケース作成 脆弱性診断の実施 診断結果の検証 レポート作成
• 診断対象の記録
• シナリオ作成
• 自動診断ツール
を使った診断
• 手動診断補助
ツールを使った
診断
• 診断ツールによる
レポート出力
• 手作業による
レポート作成
• 手作業による
診断結果の検証
38. 脆脆弱弱性性診診断断のの実実施施手手順順
(C) 2018 Tricorder Co. Ltd. 38
テストケース作成 脆弱性診断の実施 診断結果の検証 レポート作成
• 診断対象の記録
• シナリオ作成
• 自動診断ツール
を使った診断
• 手動診断補助
ツールを使った
診断
• 診断ツールによる
レポート出力
• 手作業による
レポート作成
• 手作業による
診断結果の検証
40. 診診断断リリスストトのの作作成成
1. 診断リストひな形の作成
– 項番、名称、URL、TYPE、パラメーター、診断項目
2. Webサイトのクロール
– Burp Suiteを使い、全動的ページ、全機能を巡回
– パラメーターやCookieの状態によって、異なる機能やパラメーターになるこ
ともあるので注意
3. リクエスト・レスポンスを確認しパラメーターの記載
– URL、TYPE、パラメーターを記載
– TYPE:GET、POST、Cookie、Redirect
• GET、POSTメソッド
• Cookie:Set-Cookieヘッダ
• Redirect:Locationヘッダ、METAタグのRefresh、JavaScript によるリダイレクト
(location.href, location.assign, location.replace)
(C) 2018 Tricorder Co. Ltd. 40
41. 診診断断リリスストト
NNoo.. 名名称称 UURRLL TTYYPPEE パパララメメーータターー SSQQLLii ココママンン
ドドii
CCRRLLFFii XXSSSS パパスストト
ララババーー
ササルル
オオーーププ
ンンリリダダ
イイレレクク
トト
RRFFII ククリリッッ
クク
ジジャャッッ
キキンンググ
認認証証 認認可可制制
御御のの不不
備備・・欠欠
落落
セセッッ
シショョンン
フフィィクク
セセイイ
シショョンン
CCSSRRFF HHttttppOOnnll
yy属属性性未未
設設定定
推推測測可可
能能なな
セセッッ
シショョンン
IIDD
情情報報漏漏
ええいい
1 トップページ http://www.badstore.net/ 1
Cookie SSOid
Cookie CartID
2 Home
http://www.badstore.net/cgi-
bin/badstore.cgi
Cookie SSOid - - - - -
Cookie CartID - - - - -
URL action - - - - -
3
Sign our
Guestbook
http://www.badstore.net/cgi-
bin/badstore.cgi?action=guestbook
URL action - - - - -
Cookie SSOid - - - - -
Cookie CartID - - - - -
4
Sign our
Guestbook >
Add Entry
http://www.badstore.net/cgi-
bin/badstore.cgi?action=doguestbook
1 2
URL action - - -
Cookie SSOid - - -
Cookie CartID - - -
Body name - - 4
Body email - - 5
Body comments - - 6
(C) 2018 Tricorder Co. Ltd. 41
46. 脆脆弱弱性性診診断断のの実実施施手手順順
(C) 2018 Tricorder Co. Ltd. 46
テストケース作成 脆弱性診断の実施 診断結果の検証 レポート作成
• 診断対象の記録
• シナリオ作成
• 自動診断ツール
を使った診断
• 手動診断補助
ツールを使った
診断
• 診断ツールによる
レポート出力
• 手作業による
レポート作成
• 手作業による
診断結果の検証
47. 脆脆弱弱性性診診断断のの実実施施手手順順
(C) 2018 Tricorder Co. Ltd. 47
テストケース作成 脆弱性診断の実施 診断結果の検証 レポート作成
• 診断対象の記録
• シナリオ作成
• 自動診断ツール
を使った診断
• 手動診断補助
ツールを使った
診断
• 診断ツールによる
レポート出力
• 手作業による
レポート作成
• 手作業による
診断結果の検証
51. 脆脆弱弱性性診診断断のの実実施施手手順順
(C) 2018 Tricorder Co. Ltd. 51
テストケース作成 脆弱性診断の実施 診断結果の検証 レポート作成
• 診断対象の記録
• シナリオ作成
• 自動診断ツール
を使った診断
• 手動診断補助
ツールを使った
診断
• 診断ツールによる
レポート出力
• 手作業による
レポート作成
• 手作業による
診断結果の検証
52. 診診断断報報告告書書のの記記載載事事項項
• 表紙
– タイトル、日付、報告者(会社名、部署名、担当者名など)
• 目次
• イントロダクション
– 診断報告書について(報告書の概要や目的について)
– 脆弱性診断サービスの診断対象について
– 業務運営上のリスク(診断対象の事業やサービスなどのリスクについて)
– 診断を行う際に同意した契約上の規則(免責事項、守秘義務など)
– 診断を行う際の制限事項(主に脆弱性を発見にあたっての阻害要因)
• 診断実施概要
– 診断の実施日程
– 診断対象(URL、ドメイン、IPアドレス、機器名、サービス名など)
– ネットワーク環境(診断対象と診断実施側のネットワーク的な関係)
– 診断実施者(診断を担当した脆弱性診断士)
– 診断環境(診断に使用したOS環境や診断ツール、バージョンなど)
• 診断結果
– 診断結果の総合評価
– 個別の脆弱性の報告
(C) 2018 Tricorder Co. Ltd. 52
53. 個個別別のの脆脆弱弱性性のの報報告告
• 通し番号(報告書内での通し番号)
• 脆弱性名称
• 脆弱性を一意に特定する識別子
– CWE、CVEなど
• リスク評価
– CVSS、独自指標など
• 脆弱性を発見した場所
– URL、タイトルや画面遷移での位置、画面キャプチャなど
• 脆弱性を発見したときのリクエストとレスポンスのHTTPメッセージ
• 脆弱性があると判断した理由
– 脆弱性の発動に一番因果関係が深いと考えられる事項
• 脆弱性の解説や対策
• システムやビジネスへの影響や脅威
(C) 2018 Tricorder Co. Ltd. 53
54. ((例例))SSQQLLイインンジジェェククシショョンンのの報報告告
• 脆弱性名称:SQLインジェクション
• リスク評価:高
• 場所
– http://example.com/cgi-bin/badstore.cgi
– 画面左上「Quick Item Search」の検索フォーム
• リクエストしたHTTPメッセージの内容
– パラメーター「searchquery」に「'(シングルクォート)」を入力したときに、DBMSのエラーメッセージ「Query failed」
が表示されたため、SQLインジェクションがあると判断
(C) 2018 Tricorder Co. Ltd. 54
GET /cgi-bin/badstore.cgi?searchquery=%27&action=search&x=0&y=0 HTTP/1.1
Host: example.com
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.8; rv:21.0) Gecko/20100101 Firefox/21.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: ja,en-us;q=0.7,en;q=0.3
Accept-Encoding: gzip, deflate
DNT: 1
Referer: http://example.com/cgi-bin/badstore.cgi?action=whatsnew
Connection: keep-alive