Slide 1

Slide 1 text

@madamadaikeru22 Kobe Vulnerability Assessment

Slide 2

Slide 2 text

注意事項

Slide 3

Slide 3 text

絶対に、自分の管理下にないホストには脆弱性検 査を実行してはいけません。 www www www

Slide 4

Slide 4 text

桝谷 昌史 (ますたに まさふみ) 神戸デジタル・ラボ セキュリティソリューション事業部 Masafumi Masutani @madamadaikeru22

Slide 5

Slide 5 text

1.セキュリティ診断 ■セキュリティの意義 ■セキュリティ診断の種別 ■セキュリティ診断の利用 2.Webアプリケーション ■基礎知識 ■脆弱性 3.診断ツール ■OWASP ZAP ■機能 4.診断作業(ハンズオン)

Slide 6

Slide 6 text

1.セキュリティ診断 ■セキュリティの意義 ■セキュリティ診断の種別 ■セキュリティ診断の利用

Slide 7

Slide 7 text

意義

Slide 8

Slide 8 text

セキュリティの意義 ・安全なWebサイト運用 ・セキュリティコストの低減 ・インシデント発生の最小化

Slide 9

Slide 9 text

種別

Slide 10

Slide 10 text

セキュリティ診断の種別 ・ホワイトボックス診断 ・ブラックボックス診断

Slide 11

Slide 11 text

セキュリティ診断の種別 ・ツール診断 ・マニュアル診断

Slide 12

Slide 12 text

セキュリティ診断の種別 ・Webアプリケーション診断 ・データベース診断 ・プラットフォーム診断 ・無線LAN診断 ・スマートフォンアプリケーション診断 ・組み込み機器診断

Slide 13

Slide 13 text

利用

Slide 14

Slide 14 text

セキュリティ診断の利用 ・製品のリリース前 ・定期診断 ・基準に準拠

Slide 15

Slide 15 text

2.Webアプリケーション ■基礎知識 ■脆弱性

Slide 16

Slide 16 text

基礎知識

Slide 17

Slide 17 text

HTTP Request

Slide 18

Slide 18 text

クライアント(Webブラウザ)からWebサーバへ送信する際に送られる通信 HTTPと呼ばれるプロトコルを使用する

Slide 19

Slide 19 text

HTTPリクエストは3つに分けることができる。 リクエストライン メッセージヘッダ メッセージボディ GET / HTTP/1.1 メソッド リクエストURL プロトコルバージョン

Slide 20

Slide 20 text

(補足)URLエンコード HTTPリクエストは日本語などのマルチバイト文字には対応していない そのため文字列を変換して送信する →URLエンコードと呼ぶ %E7%A5%9E%E6%88%B8 神戸 「%」を使用してエンコードしているのが特徴

Slide 21

Slide 21 text

脆弱性

Slide 22

Slide 22 text

XSS

Slide 23

Slide 23 text

XSSとは クロス・サイト・スクリプティング(XSS)とは、利用者がWeb サイトにアクセスした際に、意図しない不正なJavaスクリ プトコードなどを実行されてしまう脆弱性である。

Slide 24

Slide 24 text

XSSの原理 • 攻撃対象(被害となる)サイト例 僕のサイトです ユーザの値を動的に表示する ユーザ/攻撃者 場合によっては XSSの脆弱性がある場 合も

Slide 25

Slide 25 text

• 攻撃事例 alert(1); をパラメータに入れて送信してみる 攻撃者 XSS脆弱性があるサイト 攻撃者が入力した alert 関数が実行された場合、 攻撃者が任意の JavaScript を実行できる可能性がある alert関数が実行された例 (表示は環境によって若干変わります)

Slide 26

Slide 26 text

任意のJavaScriptが実行されると以下のような攻撃事例が考えられる • 設定によっては Cookie が分かりログイン情報が窃取される可能性がある • 攻撃者のサイトに誘導され、誘導先で第二の攻撃が行われる可能性がある • 悪意のあるスクリプトによりブラウザが攻撃される可能性がある • マルウェア配布サイトとして利用されてしまう など

Slide 27

Slide 27 text

XSSの対策 alert(1); <script>alert(1); </script> ブラウザでは変換され、 alert(1); と表示される XSSの対策 特殊文字をHTMLエンティティに変換する

Slide 28

Slide 28 text

XSSの対策 特殊文字をHTMLエンティティに変換する 対策が推奨される 文字列 変換前 変換後 & & " " ' ' あるいは ' < < > > (補足)

Slide 29

Slide 29 text

(補足) XSSの対策 特殊文字をHTMLエンティティに変換する (例)PHPの関数 htmlspecialchars($text, ENT_QUOTES, “UTF-8”); 変換対象となる文字列 扱う文字列の文字コード (指定することを推奨) 変換オプション この場合はシングルクオートも 変換対象となる(推奨)

Slide 30

Slide 30 text

SQLインジェクション

Slide 31

Slide 31 text

SQLインジェクションが発生すると • こうなってしまうかも 攻撃者 アプリ Aの情報をください + Aさんの情報を送ります 細工したパラメータ ついでに会員情報ぜんぶください + 細工したパラメータ 個人情報の漏えいなど重大な被害に発展する 場合が多い

Slide 32

Slide 32 text

SQLインジェクションの原理 SELECT *FROM users WHERE mail = ‘[email protected]‘ SELECT *FROM users WHERE mail = ‘[email protected]‘ or 1 = ‘1‘ [email protected]と入力する [email protected]‘ or 1 = ‘1’と入力する SQLの内容が変わってしまう

Slide 33

Slide 33 text

SQLインジェクションの原理 SELECT *FROM users WHERE mail = ‘[email protected] ‘ and pass = ‘password’ SELECT *FROM users WHERE mail = ‘[email protected]‘ or ‘1’ = ‘1’ – ‘ and pass = ‘password’ ログイン画面 パスワードをしらなくてもログインが可能になる →レコードが返ってきたらログインOKというシステムだと ログインできる

Slide 34

Slide 34 text

3.診断ツール ■OWASP ZAP ■機能

Slide 35

Slide 35 text

No content

Slide 36

Slide 36 text

ZAP OWASP(Open Web Application Security Project)が開 発した無料のペネトレーションテストツール オープンソースライセンスとして配布されている 国内でもユーザグループがあり、活発な議論が行われて いる

Slide 37

Slide 37 text

(補足)OWASPとは OWASP – Open Web Application Security Project • Webセキュリティを取り巻く問題を解決するための国際的なコミュニティ • 企業や国境の壁はもちろんのこと、あらゆる専門知識と経験を持った スペシャリスト、またユーザのコラボレーションにより、自由に参加でき る開放された活動を展開 OWASP Foundation • 2001年から活動開始 アメリカ政府認定NPO • 200以上の拠点に支部

Slide 38

Slide 38 text

(補足) OWASP が提供しているものとして • OWASP TOP 10 3年に一度、Webアプリケーションの注意すべき脆弱性と対策をま とめて公表 • OWASP ZAP オープンソースの脆弱性診断ツール • その他多数の成果物 ソフトウェア - オープンソース ドキュメント - CC BY SA

Slide 39

Slide 39 text

ブラウザ サーバ リクエスト レスポンス ブラウザ サーバ リクエスト レスポンス プロキシ 改変した リクエスト レスポンス 通常の挙動 ZAPを使用する場合 プロキシ機能によってリクエストを改変し脆弱性を確認する ブラウザの通常操作では出来ないリクエストを試行できる

Slide 40

Slide 40 text

機能

Slide 41

Slide 41 text

・スパイダー機能 ・動的スキャン機能 ・プロキシ機能 ・ディレクトリ探査機能 ・アラート機能 ・レポート機能 ・アドオン機能 ・スキャンポリシー機能 ・証明書機能 ・強制ブラウズ機能 ・スクリプト機能 ・ブレークポイント機能 ・静的スキャン機能 ・Fuzzer機能

Slide 42

Slide 42 text

・スパイダー機能 ・動的スキャン機能 ・プロキシ機能 ・ディレクトリ探査機能 ・アラート機能 ・レポート機能 ・アドオン機能 ・スキャンポリシー機能 ・証明書機能 ・強制ブラウズ機能 ・スクリプト機能 ・ブレークポイント機能 ・静的スキャン機能 ・Fuzzer機能

Slide 43

Slide 43 text

4.診断作業(ハンズオン)

Slide 44

Slide 44 text

注意事項

Slide 45

Slide 45 text

絶対に、自分の管理下にないホストには脆弱性検 査を実行してはいけません。 www www www

Slide 46

Slide 46 text

ZAPの「クイックスタート機能」は使用しないでくださ い。

Slide 47

Slide 47 text

プロテクトモード(推奨) スコープ内のURLに対してのみ危険な操作を実行できます プロテクトモードに切り替えてください。

Slide 48

Slide 48 text

ZAPで並列スキャンはかけないでください。

Slide 49

Slide 49 text

課題

Slide 50

Slide 50 text

架空の通販サイト「野球キングダム」からセキュリ ティ診断の依頼を受けました。 このサイトは以下の脆弱性があるようです ・XSS ・SQLインジェクション ・その他設定の不備など 実際に診断をして、簡単に報告をして頂きます 報告書として必要なもの • 脅威度、問題点レベル • 発生箇所 • 問題点(発生頻度・検証コード・発生条件など) • リスク(脆弱性により発生しうる脅威) • 対策方法

Slide 51

Slide 51 text

インストールできてますか? OWASP ZAP (最新版は2.7.0) JAVA 8 ブラウザ (推奨:Firefox) (推奨:アドオン foxyproxy)

Slide 52

Slide 52 text

検証Webサイトへアクセス 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 ■IPアドレス No1~ No4 13.230.237.145 No5~ No8 13.230.244.154 No9~ No12 13.231.3.217 No13~ No16 13.113.197.121 No17~ No20 13.113.172.7

Slide 53

Slide 53 text

検証Webサイトへアクセス ■hostsの登録 (当日発表IPアドレス) user(席番).kobe-training.ninja ■URL http:// user(席番).kobe-training.ninja/ ■診断用会員情報 ※追加で新規登録は出来ません ID PASS [email protected] suzuki [email protected] tanaka

Slide 54

Slide 54 text

デフォルト画面

Slide 55

Slide 55 text

Tree window ・site tab Information window ・history tab ・Alerts tab ・Active Scan tab etc... Workspace window ・Request tab ・Response tab ・Break tab

Slide 56

Slide 56 text

設定

Slide 57

Slide 57 text

ローカルプロキシ

Slide 58

Slide 58 text

ブラウザのプロキシ

Slide 59

Slide 59 text

スキャンモード ■セーフモード 危険な操作が許可されていません ■プロテクトモード(推奨) スコープ内のURLに対してのみ危険な操作を実行できます ■標準モード(デフォルト) 何でもできる ■攻撃モード スコープ内の対象へ、検出してすぐにスキャンを実行する

Slide 60

Slide 60 text

スキャンスレッド

Slide 61

Slide 61 text

Global Exclude URL

Slide 62

Slide 62 text

プロキシ

Slide 63

Slide 63 text

No content

Slide 64

Slide 64 text

No content

Slide 65

Slide 65 text

リクエストの改ざん

Slide 66

Slide 66 text

コンテキスト・スコープ

Slide 67

Slide 67 text

(参考)Structure

Slide 68

Slide 68 text

動的スキャン

Slide 69

Slide 69 text

動的スキャン開始

Slide 70

Slide 70 text

Scan Progress Dialog

Slide 71

Slide 71 text

Scan Progress Dialog

Slide 72

Slide 72 text

検証

Slide 73

Slide 73 text

アラートタブ

Slide 74

Slide 74 text

XSS

Slide 75

Slide 75 text

SQLi

Slide 76

Slide 76 text

レポート生成

Slide 77

Slide 77 text

ZAPリンク集

Slide 78

Slide 78 text

■Zap core help https://github.com/zaproxy/zap-core-help ■ OWASP ZAP ハンズオン https://speakerdeck.com/ykame/owasp-zap-hands-on-in-osaka-2015-02-10 ■開発者・運用者にむけたOWASP ZAPで脆弱性診断 https://speakerdeck.com/owaspjapan/owt2017jp-owaspzap ■ ZAP on Docker http://tech.withsin.net/2017/09/08/owasp-zap-docker/ ■亀田さん(ZAPエバンジェリスト)スライド集 https://www.owasp.org/index.php/User:Yuho_Kameda ■「ええんやで(^^)」サイト https://securitymemo.blogspot.jp/2014/11/owasp-zap-owasp-zap.html

Slide 79

Slide 79 text

実際の診断業務

Slide 80

Slide 80 text

報告 速報 実施 事前確認 見積もり

Slide 81

Slide 81 text

まとめ

Slide 82

Slide 82 text

関西に脆弱性診断(それ以外も)の 勉強会がなさすぎる! 関西をもっと盛り上げるためにも、 どんどんつながっていきましょう!

Slide 83

Slide 83 text

ご清聴ありがとうございました。 ■神戸脆弱性診断の会 フェイスブックグループ https://www.facebook.com/groups/1407869585989208/ Slackグループ() https://kobevat.slack.com