2015.09.17

OWASP ZAPを使ったセキュリティテストについてまとめてみた


こんにちは。次世代システム研究室のS.Iです。
セキュリティテストについて検討する機会があったので、Webシステム開発におけるZAPを利用したテストについて紹介したいと思います。

Zap128x128
OWASP Zed Attack Proxyは、Webアプリケーションの脆弱性を見つけるための統合テストツールです。
様々な検査いレーポート出力まで行うことができます。
また、オープンソースのため、無料で利用することができます。

 

効率的な設定の流れ

さっそくですが、ざっとやってみたところ、以下の流れで進めるのがよさそうでした。
  1. ブラウザでプロキシを通す設定をおこなう。(ポートは8080)
  2. プロキシを通した状態でログインを行う。(↓に自動で設定される)zap1
  3. 自動で設定されたログインテストに利用するアカウントを選択する。zap2zap3
  4. 検査対象Webサイトでできるすべての動作を手動にて行う。
  5. ログイン状態で検査させるための設定を行う。
  6. テストを実行する。
 

また、注意点としていくつかハマったところを紹介したいと思います。

注意点①

途中でログアウト処理が走った場合、ログアウトしたままになる

ログインした状態でテストしたいにもかかわらず、途中でログアウト処理が走ってしまい、テストしたいところが対象にならないといった現象がありました。
これは以下の設定を有効にすることで回避できました。
  • 自動でログインする設定する
    zap4
  • 自動でログインする範囲を設定する(めんどうなのでドメイン以下を全部指定しちゃう)
    zap5
 

注意点②

自動でクロールし、診断対象を判断してくれるがそんなに頭がよくない

診断対象サイトでできるほぼすべての動作を手動にて実行し覚えさせます。
プロキシを通した状態でログインを行い一通り操作すれば、ここはアタックしたけど、ここはしてないみたいなこともなくなります!

 

注意点③

検査対象サイト以外に攻撃(テストを実行)しちゃう!

プロキシを通した状態でほかのサイトにアクセス、なんてしてしまうといつのまにか覚えられテスト対象になってしまいます。
外部への連携先やリダイレクト先などがある場合は、あらかじめドメインごと除外設定することをお勧めします。
※テスト対象だけあらかじめ指定する設定もあるようです

 

最後に

発生しうる脆弱性はざっとあげただけでもこれだけあります。
テストツールで広範囲を自動化することができますが、全て対応できるわけではありません。
事前になにを手動で確認しなにを自動化できるかを明確にすることでもっと幸せになれる気がしました。
  • SQLインジェクション
  • XSS(クロスサイト・スクリプティング)
  • CSRF(クロスサイト・リクエスト・フォージェリ)
  • OSコマンドインジェクション
  • ディレクトリリスティング
  • メールヘッダインジェクション(改行コードインジェクション)
  • パストラバーサル(ディレクトリトラバーサル)
  • 意図しないリダイレクト
  • HTTPヘッダインジェクション(改行コードインジェクション)
  • 認証処理の不備
  • セッション管理の不備
  • アクセス制御の不備、欠陥
 

次世代システム研究室では、アプリケーション開発や設計を行うアーキテクトを募集しています。アプリケーション開発者の方、次世代システム研究室にご興味を持って頂ける方がいらっしゃいましたら、ぜひ 募集職種一覧 からご応募をお願いします。