Upgrade to Pro — share decks privately, control downloads, hide ads and more …

OWASP ZAP Hands-on In Osaka (2015-02-10)

Yuho Kameda
February 10, 2015

OWASP ZAP Hands-on In Osaka (2015-02-10)

《無償で使える!脆弱性検査ツール『OWASP ZAP』ハンズオンin 大阪》
2015/02/10 15:00 - 18:00 in Osaka.
OWASP Kansai主催によるOWASP ZAPハンズオンで使用した資料です。
OWASP ZAP 2.3.1をベースに解説しています。
http://owasp-kansai.doorkeeper.jp/events/19613

Yuho Kameda

February 10, 2015
Tweet

More Decks by Yuho Kameda

Other Decks in Technology

Transcript

  1. Profile(プロフィール) 亀田 勇歩 - @YuhoKameda [活動] ZAP Evangelist 『OWASP Zed

    Attack Proxy 運用マニュアル』執筆協力 ZAP Hands-on Training in AppSec APAC2014 脆弱性診断士(Web アプリケーション)スキルマップ執筆 [業務] Web/PF脆弱性診断 インシデントレスポンス全般
  2. 準備するもの • OWASP ZAP 2.3.1 • OWASP BWA 1.1.1 •

    VMware Player ※OSやバージョンの差異によって、資料と一致しない 箇所がある可能性があります。
  3. BWAの準備 • OWASP Broken Web Applicationのダウンロード – OWASP Broken Web

    Applicationのサイトへアクセスする – http://sourceforge.net/projects/owaspbwa/files/ • 環境に合わせてダウンロードしてください – http://sourceforge.net/projects/owaspbwa/files/
  4. 仮想マシン操作時の注意事項 • BWAのアカウントは下記の通りです。 – User Name : root – Password

    : owaspbwa • 仮想マシンを操作後、自分のマシンへカーソルを戻し たい場合、下記の操作を行ってください。 – [VM Playerの場合] Ctrl + Altボタン – [Virtual Boxの場合] 右Ctrlボタン
  5. 各種モード説明 Safe mode : 検査不可(閲覧モード) Protected mode : スコープ内のみ検査可(推奨) Standard

    mode : どこでも検査可 ATTACK mode : スコープ変更時に全自動スキャン (Ver2.4.0実装予定) うまくスコープが設定できない場合、Standard modeで検査を!
  6. 動的スキャン • 指定する領域の選び方 – All In Scope : コンテキストの設定範囲内へスキャン実行 –

    Site Scan : 対象ドメインへスキャン実行 – Subtree : 対象ディレクトリ配下へスキャン実行 – Single URL Scan : 対象URLのみへスキャン実行
  7. エンコーダ/デコーダ • 文字列をエンコード/デコードする機能 • 文字列をハッシュ計算する機能 • 変換出来る種類 – Base64 エンコード/デコード

    – URL エンコード/デコード – ASCII→16進数 – HTML エンコード/デコード – Javascript エンコード/デコード
  8. 診断環境への検査 (Bodge It) • 管理ページの公開 • 反射型クロスサイト・スクリプティング • SQLインジェクション •

    商品購入時の購入数を改ざん • 持続型クロスサイト・スクリプティング • クッキーの改ざん
  9. 強制ブラウズ • ディレクトリ調査 • カスタマイズも可能 • directory-list-1.0.txt 141,694件 収録 •

    directory-list-2.3-big.txt 1,273,819件 収録 • directory-list-2.3-medium.txt 220,546件 収録 • directory-list-2.3-small.txt 87,650件 収録 • directory-***2.3-big.txt 1,185,240件 収録 • directory-***2.3-medium.txt 207,619件 収録 • directory-***2.3-small.txt 81,643件 収録
  10. ログイン状態の設定(フォーム編) 1. ログイン処理を行うリクエストを探す 2. ログイン処理を登録する [右クリック > Flags as Context

    > 1: form-based Auth Login Request] 3. Username/Passwordのパラメータを設定する 4. ログイン状態で(ある/はない)文字列を探す 5. 4の箇所をどちらか登録する [右クリック > Flag as Context > 1: Auth Logged-in/out indicator]
  11. ログイン状態の設定(フォーム編) 1. ログイン処理を行うリクエストを探す 2. ログイン処理を登録する [右クリック > Flasg as Context

    > 1: form-based Auth Login Request] 3. Username/Passwordのパラメータを設定する 4. ログイン状態で(ある/はない)文字列を探す 5. 4の箇所をどちらか登録する [右クリック > Flag as Context > 1: Auth Logged-in/out indicator]
  12. ログイン状態の設定(フォーム編) 1. ログイン処理を行うリクエストを探す 2. ログイン処理を登録する [右クリック > Flasg as Context

    > 1: form-based Auth Login Request] 3. Username/Passwordのパラメータを設定する 4. ログイン状態で(ある/はない)文字列を探す 5. 4の箇所をどちらか登録する [右クリック > Flag as Context > 1: Auth Logged-in/out indicator]
  13. ログイン状態の設定(フォーム編) 1. ログイン処理を行うリクエストを探す 2. ログイン処理を登録する [右クリック > Flasg as Context

    > 1: form-based Auth Login Request] 3. Username/Passwordのパラメータを設定する 4. ログイン状態で(ある/はない)文字列を探す 5. 4の箇所をどちらか登録する [右クリック > Flag as Context > 1: Auth Logged-in/out indicator]
  14. ログイン状態の設定(フォーム編) 1. ログイン処理を行うリクエストを探す 2. ログイン処理を登録する [右クリック > Flasg as Context

    > 1: form-based Auth Login Request] 3. Username/Passwordのパラメータを設定する 4. ログイン状態で(ある/はない)文字列を探す 5. 4の箇所をどちらか登録する [右クリック > Flag as Context > 1: Auth Logged-in/out indicator] ログインしている状態 ログインしていない状態
  15. ログイン状態の設定(フォーム編) 1. ログイン処理を行うリクエストを探す 2. ログイン処理を登録する [右クリック > Flasg as Context

    > 1: form-based Auth Login Request] 3. Username/Passwordのパラメータを設定する 4. ログイン状態で(ある/はない)文字列を探す 5. 4の箇所をどちらか登録する [右クリック > Flag as Context > 1: Auth Logged-in/out indicator]
  16. ZAP Script • 様々な状況下でスクリプトを実行 – Passive Rules • パッシブスキャン実行時に実行 –

    Active Rules • 動的スキャン実行時に実行 – プロキシ • ZAPをプロキシとして使用する時 に実行 – Stand Alone • 手動で実行 – Targeted • 指定したURLに対して実行
  17. よく検知する脆弱性 • [High]Cross Site Scripting(Reflected) 反射型クロスサイト・スクリプティング • [High]Cross Site Scripting(Persistent)

    持続型クロスサイト・スクリプティング • [High]SQL Injection SQLインジェクション • [Medium]Application Error disclosure アプリケーションエラーの開示 • [Low]Cookie set without HttpOnly flag クッキーにHttpOnlyが設定されていない • [Low]Password Authentication in browser オートコンプリート機能の有効 • [Low]X-Content-Type-Option header missing X-Content-Type-Optionsヘッダの未設定 • [Info]X-Frame-Options header not set X-Frame-Optionsヘッダが設定されていない
  18. データの保存 HSQL (JavaのRDB) - Persist Session - Snapshot Session ZAP起動直後

    (保存無し) Persist Session (継続保存) Snapshot Session (スナップショット) Snapshot Session (スナップショット) ZAP終了 (自動保存) ① ② ③ ①’
  19. Google Group • OWASP ZAP Developer Group – メンバー数:434人 –

    開始日:2010/08/17 – 主な内容 • ZAP開発に関すること • Extensionの開発 • バグ修正 • OWASP ZAP User Group – メンバー数:431人 – 開始日:2012/05/22 – 主な内容 • 使い方の質問 • 実装してほしいリクエスト
  20. Google Group • OWASP ZAP Scripts – メンバー数:30人 – 開始日:2014/03/26

    – 主な内容 • ZAPスクリプトを共有するためのグループ
  21. Translations for the OWASP ZAP (https://crowdin.net/project/owasp- zap) • ZAP翻訳プロジェクト •

    日本語翻訳度は30% (2015/2/10現在) • だれでも参加可能
  22. Any Question? • Social Account – Twitter : @YuhoKameda •

    URL – https://www.owasp.org/index.php/User:Yuho_Kameda • E-mail – [email protected]