Slide 1

Slide 1 text

第39回ハンズオンセミナー 脆弱性診断ええんやで(^^) OWASP ZAP Maniacs #6 2016年8月24日(水) 脆弱性診断研究会 (Security Testing Workshop)

Slide 2

Slide 2 text

脆弱性診断研究会とは Webアプリケーションやネットワーク機器などに対するセ キュリティ診断の最新手法や診断ツール使用法の勉強や研究 をするためのコミュニティ コワーキングスペース茅場町 Co-Edo(コエド)様にて第1回 セミナーを2014年8月に開催して以来、2016年7月現在で38回 のパブリックセミナーを実施 プライベートセミナーは年に数回実施 © 2016 脆弱性診断研究会 Security Testing Workshop 2

Slide 3

Slide 3 text

自己紹介 松本 隆則 (nilfigo:ニルフィーゴ) HASHコンサルティング株式会社  https://www.facebook.com/nilfigo  https://twitter.com/DYOH2017 © 2016 脆弱性診断研究会 Security Testing Workshop 3

Slide 4

Slide 4 text

自己紹介 脆弱性診断研究会 管理人・セミナー講師 • Facebook https://www.facebook.com/groups/zeijakusei.shindan.kenkyukai/ https://www.facebook.com/sec.testing.study.session/ • セミナー・イベント管理サイト https://security-testing.doorkeeper.jp/ http://security-testing.connpass.com/ © 2016 脆弱性診断研究会 Security Testing Workshop 4

Slide 5

Slide 5 text

自己紹介 OWASP Japan プロモーションチーム  https://www.owasp.org/index.php/Japan  http://blog.owaspjapan.org/ © 2016 脆弱性診断研究会 Security Testing Workshop 5

Slide 6

Slide 6 text

1. OWASPって何? The Open Web Application Security Project Let's know OWASP! https://speakerdeck.com/owaspjapan/lets-know-owasp-number-bpstudy20160226 工程別活用可能な資料・ツールの紹介 https://speakerdeck.com/owaspjapan/owasp-contents-reference OWASPの歩き方 https://speakerdeck.com/owaspjapan/what-is-owasp-20160319innovationegg7th © 2016 脆弱性診断研究会 Security Testing Workshop 6

Slide 7

Slide 7 text

2. Tips and Tricks OWASP ZAP作業 ディレクトリ変更 © 2016 脆弱性診断研究会 Security Testing Workshop 7

Slide 8

Slide 8 text

2. Tips and Tricks OWASP ZAPのセミナーネタを試す と設定や環境が汚れてつらみある そんなアナタに © 2016 脆弱性診断研究会 Security Testing Workshop 8

Slide 9

Slide 9 text

2. Tips and Tricks OWASP ZAP作業ディレクトリ変更 起動時に-dirオプション! © 2016 脆弱性診断研究会 Security Testing Workshop 9

Slide 10

Slide 10 text

2. ZAP作業ディレクトリ変更 バッチファイル(Windows) シェルスクリプト (OS X, CentOS, Ubuntu, etc) Qiitaで公開中 http://qiita.com/nilfigo/items/0c6d76bd94deb8dee05d set zap_user_dir="C:¥Users¥user¥path¥to¥dir" java -jar zap-2.5.0.jar -dir %zap_user_dir% %* ZAP_USER_DIR=/home/user/path/to/dir java -jar zap-2.5.0.jar -dir $ZAP_USER_DIR %* © 2016 脆弱性診断研究会 Security Testing Workshop 10

Slide 11

Slide 11 text

ハンズオンの前に…… © 2016 脆弱性診断研究会 Security Testing Workshop 11

Slide 12

Slide 12 text

OWASP ZAPのモード プロテクトモードの使用を推奨 診断対象URLを「コンテキスト」に 登録しなければ情報収集や動的スキャンを 実施できないため「事故」が起きにくい © 2016 脆弱性診断研究会 Security Testing Workshop 12

Slide 13

Slide 13 text

OWASP ZAPのモード © 2016 脆弱性診断研究会 Security Testing Workshop 13

Slide 14

Slide 14 text

3. ログイン処理 攻略法 a. フォーム認証 i. IDとパスワードで認証 ii. 3項目以上で認証 b. Basic認証 © 2016 脆弱性診断研究会 Security Testing Workshop 14

Slide 15

Slide 15 text

3. ログイン処理 攻略法 a. フォーム認証 i. IDとパスワードで認証 ii. 3項目以上で認証 b. Basic認証 © 2016 脆弱性診断研究会 Security Testing Workshop 15

Slide 16

Slide 16 text

3.a.i. IDとパスワードで認証 1. 診断検証サイトのログイン画面をZAP経由で表示 © 2016 脆弱性診断研究会 Security Testing Workshop 16

Slide 17

Slide 17 text

3.a.i. IDとパスワードで認証 2. ZAPのコンテキストに診断対象サイトを登録 © 2016 脆弱性診断研究会 Security Testing Workshop 17

Slide 18

Slide 18 text

3.a.i. IDとパスワードで認証 3. いきなり「スパイダー」を実行 © 2016 脆弱性診断研究会 Security Testing Workshop 18

Slide 19

Slide 19 text

3.a.i. IDとパスワードで認証 4. 全部で3個のURIを検出 © 2016 脆弱性診断研究会 Security Testing Workshop 19

Slide 20

Slide 20 text

3.a.i. IDとパスワードで認証 5. コンテキストの「認証」にForm認証情報を手入力 © 2016 脆弱性診断研究会 Security Testing Workshop 20

Slide 21

Slide 21 text

3.a.i. IDとパスワードで認証 6. コンテキストに「ユーザ」を追加 © 2016 脆弱性診断研究会 Security Testing Workshop 21

Slide 22

Slide 22 text

3.a.i. IDとパスワードで認証 7. 追加したユーザを使用してスパイダーを実行 © 2016 脆弱性診断研究会 Security Testing Workshop 22

Slide 23

Slide 23 text

3.a.i. IDとパスワードで認証 8. ログイン後に表示される画面のリンクを検出 © 2016 脆弱性診断研究会 Security Testing Workshop 23

Slide 24

Slide 24 text

3.a.i. IDとパスワードで認証 9. スパイダーが検出したURIはZAPの履歴に存在しない © 2016 脆弱性診断研究会 Security Testing Workshop 24

Slide 25

Slide 25 text

3. ログイン処理 攻略法 a. フォーム認証 i. IDとパスワードで認証 ii. 3項目以上で認証 b. Basic認証 © 2016 脆弱性診断研究会 Security Testing Workshop 25

Slide 26

Slide 26 text

3.a.ii. 3項目以上で認証 ZAP標準の機能では無理! なので スクリプトでなんとかしよう! © 2016 脆弱性診断研究会 Security Testing Workshop 26

Slide 27

Slide 27 text

3.a.ii. 3項目以上で認証 1. 診断検証サイトのログイン画面をZAP経由で表示 © 2016 脆弱性診断研究会 Security Testing Workshop 27

Slide 28

Slide 28 text

3.a.ii. 3項目以上で認証 2. ZAPのコンテキストに診断対象サイトを登録 3. 3項目以上で認証するためのスクリプト作成 © 2016 脆弱性診断研究会 Security Testing Workshop 28

Slide 29

Slide 29 text

3.a.ii. 3項目以上で認証 4. テンプレートからスクリプトを作成して改造 © 2016 脆弱性診断研究会 Security Testing Workshop 29 * スクリプトの一部抜粋 * // Prepare the login request details requestUri = new org.apache.commons.httpclient.URI(paramsValues.get("Target URL"), false); requestMethod = org.parosproxy.paros.network.HttpRequestHeader.POST; // Build the request body using the credentials values extraPostData = paramsValues.get("Extra POST data"); requestBody = paramsValues.get("Group field") + "=" + encodeURIComponent(credentials.getParam("Group")); requestBody+= "&" + paramsValues.get("Username field") + "=" + encodeURIComponent(credentials.getParam("Username")); requestBody+= "&" + paramsValues.get("Password field") + "=" + encodeURIComponent(credentials.getParam("Password")); if (extraPostData.trim().length() > 0) {

Slide 30

Slide 30 text

3.a.ii. 3項目以上で認証 5. スクリプトとコンテキストを紐付ける © 2016 脆弱性診断研究会 Security Testing Workshop 30

Slide 31

Slide 31 text

3.a.ii. 3項目以上で認証 6. コンテキストの「認証」を設定 © 2016 脆弱性診断研究会 Security Testing Workshop 31

Slide 32

Slide 32 text

3.a.ii. 3項目以上で認証 7. コンテキストに「ユーザ」を追加 © 2016 脆弱性診断研究会 Security Testing Workshop 32

Slide 33

Slide 33 text

3. ログイン処理 攻略法 a. フォーム認証 i. IDとパスワードで認証 ii. 3項目以上で認証 b. Basic認証 © 2016 脆弱性診断研究会 Security Testing Workshop 33

Slide 34

Slide 34 text

3.b. Basic認証 既存のフォーム認証設定をキープして、新たにBasic認証設定 を追加しようとすると 「変更するなら保存してある設定を消しちゃうけど大丈夫?」 © 2016 脆弱性診断研究会 Security Testing Workshop 34

Slide 35

Slide 35 text

3.b. Basic認証 全然大丈夫じゃない!! ので スクリプトでなんとかしよう! © 2016 脆弱性診断研究会 Security Testing Workshop 35

Slide 36

Slide 36 text

3.b. Basic認証 1. Basic認証用アカウント ID: stw039basic パスワード: stw039basic © 2016 脆弱性診断研究会 Security Testing Workshop 36

Slide 37

Slide 37 text

3.b. Basic認証 2. IDとパスワードをコロンで連結 stw039basic:stw039basic © 2016 脆弱性診断研究会 Security Testing Workshop 37

Slide 38

Slide 38 text

3.b. Basic認証 3. Base64でエンコード © 2016 脆弱性診断研究会 Security Testing Workshop 38

Slide 39

Slide 39 text

3.b. Basic認証 4. Basic認証用ヘッダー作成 Authorization: Basic c3R3MDM5YmFzaWM6c3R3MDM5YmFzaWM= © 2016 脆弱性診断研究会 Security Testing Workshop 39

Slide 40

Slide 40 text

3.b. Basic認証 5. Basic認証用ヘッダーを追加するス クリプトを作成 「OWASP ZAP で送信されるリクエストに自動で独 自ヘッダを追加する方法」 http://www.pupha.net/archives/2654/ © 2016 脆弱性診断研究会 Security Testing Workshop 40

Slide 41

Slide 41 text

3.b. Basic認証 6. スクリプト適用後 © 2016 脆弱性診断研究会 Security Testing Workshop 41

Slide 42

Slide 42 text

資料  OWASP ZAP ハンズオンセミナー 「第4回セキュリティ診断(自分でしたら)いかんのか?( OWASP ZAPなら)ええんやで(^ ^)」内容まとめ • http://securitymemo.blogspot.jp/2014/12/owasp-zap-4owasp-zap.html  FoxyProxy Standard • http://getfoxyproxy.org/downloads.html • http://qiita.com/nilfigo/items/c8b5e8321e63531640a9  OWASP ZAP翻訳プロジェクト • https://crowdin.com/project/owasp-zap/ja • http://qiita.com/nightyknite/items/402e639b9d64d8f8eca5  Proxy War • http://www.slideshare.net/zaki4649/proxy-war-42161988 © 2016 脆弱性診断研究会 Security Testing Workshop 42

Slide 43

Slide 43 text

今後に予定しているセミナーの例  OWASP ZAP Rookies  ローカルプロキシと手動診断  ウェブ健康診断のススメ  脆弱性診断ってどうすればいいの? © 2016 脆弱性診断研究会 Security Testing Workshop 43

Slide 44

Slide 44 text

OWASP ZAP Rookies  OWASP ZAPとブラウザの設定  スキャンポリシー  静的スキャン  動的スキャン(自動診断)  診断結果確認と保存 © 2016 脆弱性診断研究会 Security Testing Workshop 44

Slide 45

Slide 45 text

ローカルプロキシと手動診断  OWASP ZAP  Burp Suite  Fiddler2  各ツールの特徴  多段プロキシ!のコツ © 2016 脆弱性診断研究会 Security Testing Workshop 45

Slide 46

Slide 46 text

ウェブ健康診断のススメ  ウェブ健康診断って?  ツールでラクラク毎日健康診断♪ © 2016 脆弱性診断研究会 Security Testing Workshop 46

Slide 47

Slide 47 text

脆弱性診断ってどうすればいいの?  脆弱性診断に必要な心構え  診断対象数の見積もり方法について  セキュリティ会社によって対象画面数や金額 が違うのはナゼ?  20ページ程度だと思って見積もりを依頼した ら50ページって言われたんだけど © 2016 脆弱性診断研究会 Security Testing Workshop 47

Slide 48

Slide 48 text

興味があるのは?  OWASP ZAP Rookies  ローカルプロキシと手動診断  ウェブ健康診断のススメ  脆弱性診断ってどうすればいいの? アンケートにご協力いただきたく https://goo.gl/forms/2IGkqViXpQr3KoPw1 © 2016 脆弱性診断研究会 Security Testing Workshop 48