OWT2017JP-OWASPZAP

D2c0774c30304e4970b502118aa791fe?s=47 OWASP Japan
September 30, 2017

 OWT2017JP-OWASPZAP

#OWT2017JP
OWASP ZAP talk by 亀田勇歩, SCSK

D2c0774c30304e4970b502118aa791fe?s=128

OWASP Japan

September 30, 2017
Tweet

Transcript

  1. 開発者・運用担当者に向けた、 OWASP ZAPを用いた脆弱性診断手法 Penetration Testing by OWASP ZAP for Developer

    / Operator 2017年9月30日 @YuhoKameda
  2. 自己紹介 亀田 勇歩 - SCSK株式会社 セキュリティサービス部 - @YuhoKameda [業務] Web/PF脆弱性診断

    インシデントレスポンス全般 [活動] ZAP Evangelist 『OWASP Zed Attack Proxy 運用マニュアル』執筆協力 ZAP Hands-on Training in AppSec APAC2014 Webシステム/Webアプリケーションセキュリティ要件書 2.0 執筆 脆弱性診断士(Web アプリケーション)ガイドライン 執筆 OSINT CTF 8位入賞 (DEFCON 25)
  3. Agenda • OWASP ZAPとは? • ZAPの利用想定事例 • 役に立つ関連OWASPプロジェクト – OWASP

    Top 10 – OWASP Cheat Sheet – Pentester Skillmap Project JP • OWASP トップ10に対応するZAP機能の紹介 • 振り返り
  4. 本トレーニングについて • 概要 – OWASP ZAPを使用して、開発中のアプリや納品時の受け入れテスト時に、脆弱性診断を行うことを 目的としたトレーニングを実施します。 • 目的 –

    開発を行いながら脆弱性を作りこんでいないか簡易的に診断を行うことができる – 受け入れ時に簡易的に診断を行うことができる – ZAPを使ったことがあるが、簡易的に診断を行うためのより詳しい使い方やコツを知ることができる – ZAPを使って「Webアプリケーション脆弱性診断ガイドライン」を利用する方法を知ることができる • 主な対象者 – ZAPを利用したことがある、ZAPの基本的な操作を理解している – 開発中や受け入れ時に診断を行いたいと考えている開発者や受け入れ担当者 • 関連プロジェクト – OWASPトップ10 – OWASPチートシート – Pentester Skillmap Project JP
  5. 診断時の注意 • 自分の管理する範囲内のサーバ、または検証 ネットワーク内に対してのみスキャンを行うよう にしてください。 • データへの影響や診断文字列の残存、診断対 象へ一定の負荷があるため、本番環境へ診断 をすることは極力避けてください。 •

    アンチウィルスソフトが攻撃と判断し通信を遮断 する可能性があります。
  6. OWASP ZAPとは?

  7. OWASP ZAPとは? • OWASP Zed Attack Proxy(ZAP) • 全世界的に使用されている無料のペネトレー ションテストツール

    • Webアプリケーションに対して自動診断を行う • 腕を磨けば手動での診断にも利用できる
  8. OWASP ZAPとは? •画面イメージ

  9. 2.0.0以降のZAP年表 2013 2013/01/30 ver 2.0.0 2013/04/18 ver 2.1.0 2013/09/11 ver

    2.2.0 2013/09/27 ver 2.2.2 2013/11/04 ZAP Evangelist制度開始 2014 2014/03/17 AppSec APACにてハンズオントレーニング 2014/03/27 ZAP Evangelistに日本人初の登録 2014/04/10 ver 2.3.0 2014/05/21 ver 2.3.1 2015 2015/04/14 ver 2.4.0 2015/07/30 ver 2.4.1 2015/08 ZAPスクリプトコンテスト 2015/09/07 ver 2.4.2 2015/12/04 ver 2.4.3 2016 2016/06/03 ver 2.5.0 2016/06/03 bugcrowdでバグバウンティプログラム開始 2017 2017/03/29 ver 2.6.0
  10. ZAPの役に立つ情報ソース • Twitter (ZAPに関するアナウンス) – https://twitter.com/zaproxy • ZAP Blog (定期的な情報発信)

    – https://zaproxy.blogspot.jp/ • ZAP User Guide (コア機能に関するマニュアル) – https://github.com/zaproxy/zap-core-help/wiki • ZAP Introduction Wiki (詳細なオンラインマニュアル) – https://github.com/zaproxy/zaproxy/wiki/Introduction • ZAP User Group (ユーザコミュニティ) – https://groups.google.com/group/zaproxy-users • Crowdin ZAP GUI translation (GUI翻訳グループ) – https://crowdin.com/project/owasp-zap • Crowdin ZAP User Guide Translation (User Guide 翻訳グループ) – https://crowdin.com/project/owasp-zap-help • Open Hub (OSS 開発コミュニティサイト) – https://www.openhub.net/p/zaproxy • Bountysource (ZAP バグバウンティプログラム) – https://www.bountysource.com/teams/zap/issues • ZAP日本語マニュアル Ver.2.1.0版 (日本語) – https://docs.google.com/file/d/0B1e1Cma1GUllazNUNVp6OWdGYzg/edit
  11. ZAP最新版を入手 • OWASP Zed Attack Proxy Project – https://www.owasp.org/index.php/OWASP_Zed_ Attack_Proxy_Project

    ここから ダウンロード!
  12. Proxyツールとしての機能 • ZAPをProxyとして機能させて、リクエストを改竄し、レ スポンスを評価します。Proxyのブレーク機能を用い た手動検査の方法を紹介する。 ①通常のリクエスト ブラウザ等で、Webページを閲覧 ③Proxyにより 改ざんされたリクエスト ④サーバからのレスポンス

    ⑤ログの記録 必要により、レスポンス の改ざんを行う Proxy 検査対象 ②Proxyによる改ざん GET/POST/Cookie他、 ヘッダを不正な値に変更する ⑥Proxyを通過したレスポンス
  13. ZAP基本機能の振り返り • Active Scan • Passive Scan • ブレークポイント •

    スパイダー • AJAXスパイダー • 強制ブラウズ • スキャンポリシー • 証明書 • エンコード/デコード • レポート生成 • 拡張機能 • Fuzzer • Web Sockets • Replacer • Zest • スクリプト
  14. ZAPの利用想定事例

  15. ZAPの利用想定事例 要件定義 設計/開発 • 開発中の動 作確認 テスト/検証 • 受け入れテ スト

    運用/保守 • 脆弱性診断 の実施
  16. ZAPの利用想定事例 • (設計/開発)開発中の動作確認 – デバッグや簡単な脆弱性確認に利用 • (テスト/検証)受け入れテスト – 納品されたWebアプリの受け入れテストに利用 •

    (運用/保守)脆弱性診断の実施 – 機能リリース等による脆弱性診断に利用
  17. ZAPの利用想定事例 • (設計/開発)開発中の動作確認 – デバッグや簡単な脆弱性確認に利用 • (テスト/検証)受け入れテスト – 納品されたWebアプリの受け入れテストに利用 •

    (運用/保守)脆弱性診断の実施 – 機能リリース等による脆弱性診断に利用 デバッグしながら脆弱性が無いことを確認 確認すべき検査項目を元に診断を実施 自動診断による網羅的な診断 手動診断による自動診断で漏れる検査の実施
  18. 役に立つ関連OWASPプロジェクト

  19. 役に立つ関連OWASPプロジェクト • OWASPトップ10 • OWASPチートシート • Pentester Skillmap Project JP

  20. 役に立つ関連OWASPプロジェクト • OWASP トップ10 (ZAPpingTheTop10) – ZAPでOWASP トップ10を診断しようとした際のマッピング – 自動診断

    (Active Scan Rule / Passive Scan Rule) • A1 : Injection • A3 : Cross-Site Scripting (XSS) • A5 : Security Misconfiguration • A6 : Sensitive Data Exposure • A8 : Cross-Site Request Forgery (CSRF) • A9 : Using Components with Known Vulnerabilities • A10 : Unvalidated Redirects and Forwards – 手動診断 • A6(機密データの露出)以外全般 https://www.owasp.org/index.php/ZAPpingTheTop10
  21. 役に立つ関連OWASPプロジェクト • OWASP トップ10 (ZAPpingTheTop10) – 自動診断では見つからない項目 • A2 :

    Broken Authentication and Session Management – 有効なZAPの機能例 : Httpセッション • A4 : Insecure Direct Object References – 有効なZAPの機能例 : パラメータ タブ • A7 : Missing Function Level Access Control – 有効なZAPの機能例 : スパイダー / AJAXスパイダー – 今後期待なZAPの機能 : Access Control
  22. 役に立つ関連OWASPプロジェクト • OWASP チートシート

  23. 役に立つ関連OWASPプロジェクト • OWASP チートシート(Assessment/Breakers) – Web Application Security Testing Cheat

    Sheet – 診断時に必要な項目のチェックリスト • (英語) – https://www.owasp.org/index.php/Web_Application_Security _Testing_Cheat_Sheet • (日本語) – https://jpcertcc.github.io/OWASPdocuments/CheatSheets/W ebApplicationSecurityTesting.html
  24. 役に立つ関連OWASPプロジェクト • Pentester Skillmap Project JP • 脆弱性診断士スキルマッププロジェクト • https://www.owasp.org/index.php/Pentester_Skillmap_Project_JP

    – 脆弱性診断士(Webアプリケーション)スキルマップ&シラバス – 脆弱性診断士(プラットフォーム)スキルマップ&シラバス • 脆弱性診断業務に必要な技術的な能力を明示(マネジメントやコミュニケー ションスキルは対象外) • 特定のツールや環境に依存しない • 各社提供の診断サービスの品質に対する指標は対象外 – Webアプリケーション脆弱性診断ガイドライン • 手動診断補助ツールを使った手動診断を推奨 • 能力差を埋めるため、最低限必要な診断項目や手順を定義 • 一定レベルの手動診断による脆弱性診断 ガイドラインを使ったハンズオントレーニングも実施!
  25. Webアプリケーション脆弱性診断ガイ ドライン • OWASP JapanとISOG-Jの共同WGによる作成 • 脆弱性診断を行う個人の技術的な能力を具体的にする。 • 脆弱性診断を行う技術者(以下、脆弱性診断士)のスキル マップと学習の指針となるシラバス、脆弱性診断を行うため

    のガイドラインを整備。 • - 脆弱性診断士(Webアプリケーション) • - 脆弱性診断士(プラットフォーム)
  26. Webアプリケーション脆弱性診断ガイ ドライン <主な対象者> • 自社のWebアプリケーションの脆弱性診断(受入れ検査) を行う方 • 脆弱性診断業務の従事を目指す方(学生など) <活用方法例> ✓

    スキルマップ&シラバスを用いた、基礎知識の習得 ✓ 脆弱性診断ガイドラインを用いた、基礎的な受入れ検査実 施 ✓ 脆弱性診断ガイドラインを用いた、開発時の簡易「脆弱性 診断」実施
  27. Webアプリケーション脆弱性診断ガイ ドライン • ガイドライン掲載の例 – 分類 : SQLインジェクション – 診断を実施すべき箇所

    : すべて – ペイロード・検出パターン : ‘ (シングルクォート) – 操作を行う対象 : パラメーター – 診断方法 • パラメーターの値に検出パターンを挿入し、リクエストを送信 – 脆弱性がある場合 • DB関連のエラーが表示されるか、正常動作と挙動が異なる – 脆弱性がない場合 • DB関連のエラーは表示されない どの箇所に何を 埋め込むか どう診断したときに、どのように動作したか
  28. ZAPの利用想定事例 • (設計/開発)開発中の動作確認 – デバッグや簡単な脆弱性確認に利用 • (テスト/検証)受け入れテスト – 納品されたWebアプリの受け入れテストに利用 •

    (運用/保守)脆弱性診断の実施 – 機能リリース等による脆弱性診断に利用 デバッグしながら脆弱性が無いことを確認 確認すべき検査項目を元に診断を実施 自動診断による網羅的な診断 手動診断による自動診断で漏れる検査の実施
  29. OWASPプロジェクトを活かした ZAPの利用想定事例 • (設計/開発)開発中の動作確認 – デバッグや簡単な脆弱性確認に利用 • (テスト/検証)受け入れテスト – 納品されたWebアプリの受け入れテストに利用

    • (運用/保守)脆弱性診断の実施 – 機能リリース等による脆弱性診断に利用 デバッグを兼ねたローカルプロキシツール 脆弱性診断ガイドラインに沿った診断実施 OWASP トップ10に対応した自動 / 手動診断
  30. 利用想定事例にあった施策 • デバッグを兼ねたローカルプロキシツール • 脆弱性診断ガイドラインに沿った診断実施 – 「Webアプリケーション脆弱性診断ガイドライン利用 のためのドキュメント」を読む • ブラウザの通信がZAPを通してアクセスできていることを確

    認 • 診断項目を確認 • 脆弱性がない場合を確認 • 診断を実施 • 脆弱性がある場合の結果を確認 • 再送信せずに、ブレークして診断を実施 https://docs.google.com/document/d/1-eZqWf2TqfEwc9f-OZr6bY24VjvNMUwS9zzAejpZQ64/
  31. 利用想定事例にあった施策 • OWASP トップ10に対応した自動 / 手動診断 – 自動診断 (A1, A3,

    A5, A6, A8, A9, A10) • Active Scan Rule • Passive Scan Rule – 手動診断 (A2, A4, A7) • Httpセッション • パラメータ タブ • スパイダー / AJAXスパイダー • Access Control
  32. OWASP トップ10に対応する ZAP機能の紹介

  33. Active Scan Rule • 動的スキャンのルール集 • Release / Beta /

    Alpha – Releaseのみデフォルトでインストール – Beta以降は、より複雑なペイロードを含む – 基本的な脆弱性を見つける場合、Releaseを推奨
  34. Active Scan Rule • 使用可能なActive Scan Rulesを確認 どちらの選択画面でも 確認できます。

  35. Active Scan Rule • 「ポリシー」で、ステータスごとに表示が異なる • 使用したいテスト名のみ選択可能

  36. Passive Scan Rule • 静的(パッシブ)スキャンのルール集 • Release / Beta /

    Alpha – Releaseのみデフォルトでインストール – Beta以降は、より珍しい検出文字列が増える – 過検知が増えるような検出文字列が増える – 基本的な脆弱性を見つける場合、Releaseを推奨
  37. Passive Scan Rule • オプションの「静的スキャンルール」で確認

  38. Httpセッション • 特定の条件にマッチした文字列をセッション 情報として格納 • 必要に応じてセッションを切り替えて使用

  39. Httpセッション • 「オプション」で、使用するセッション名を検出 するよう設定

  40. Httpセッション • セッションを使い分けて検査を行うことが可能

  41. パラメータ タブ • 様々なパラメータの値を整理して表示 • デフォルトのタブ列に表示されていない場合、 「+」ボタンから「パラメータ」タブを追加

  42. パラメータ タブ • サイトごとにパラメータの一覧が表示 • 1つ1つレスポンスを見なくても一挙に確認 • 手動操作やスパイダーで遷移させた後に確 認すると、存在する値を見逃さない

  43. スパイダー / AJAXスパイダー • 指定ページから遷移可能なページを探索 • 認証があるサイトにおいて、「認証無し」と「認 証時」の設定を行うことによって、それぞれ 違った画面遷移を記録することが可能 「ログイン状態の設定(フォーム編)」については、

    OWASP ZAP Hands-on In Osaka (2015-02-10) (P.58)を参照 https://speakerdeck.com/ykame/owasp-zap-hands-on-in-osaka-2015-02-10
  44. Access Control • 次リリースで実装予定(Weekly実装済)

  45. Access Control • 設定ユーザごとのアクセス制御を確認

  46. 振り返り • OWASP ZAPとは? • ZAPの利用想定事例 • 役に立つ関連OWASPプロジェクト – OWASP

    Top 10 – OWASP Cheat Sheet – Pentester Skillmap Project JPについて • OWASP トップ10に対応するZAP機能の紹介
  47. Profile • Mail : yuho.kameda@owasp.org • Twitter : @YuhoKameda •

    WebSite (過去の発表資料) : – https://www.owasp.org/index.php/User:Yuho_Kameda – https://speakerdeck.com/ykame