実演! OWASP ZAP を使った脆弱性診断 研修コースに参加してみた

今回参加したコースは 実演! OWASP ZAP を用いた脆弱性診断 です。
サイバーセキュリティって、ちょっとでも隙があると攻撃されてしまうという感じで、怖いですよね。大きなシステムを作るのではなくて、ちょっとしたサーバでも、ちょっとした設定ミスで脆弱性があったりして、ビクビクものです。
そこで、事前に自分たちで攻撃手法を使って診断し、対策しておけば安心です。
このコースで解説された OWASP ZAP は、 Web アプリケーションに特化した脆弱性診断ツールです。
今回はオンライン開催のため、「講師が実演して疑似体験」というコンセプトで、講師のローカル PC で検証対象のサーバを立てて、 OWASP ZAP の使い方をデモンストレーションしました。
もくじ
コース情報
想定している受講者 | 特になし |
---|---|
受講目標 |
|
講師紹介
このコースで登壇されたのは 村上 博 さんです。参加してみたレポートでは初登場ですね。

SI 企業にてネットワーク、セキュリティの構築、設計の業務に携わる。現在は情報処理安全確保支援士としてセキュリティ監査、脆弱性診断などのセキュリティ支援活動に従事。
著書に「情報処理教科書 ポケットタイム要点整理 情報セキュリティマネジメント」(翔泳社刊)など多数。
村上さんは普段セキュリティ監査に携わってらっしゃるのですが、オリンピックイヤーはサイバー攻撃が多く、とても業務が増えているとのことでした。
脆弱性診断とは
まずは脆弱性診断の概要を学びました。
- システムや Web アプリケーションの脆弱性の有無を調査・分析する
- 会計監査やシステム監査のように第三者が行う
- 検証方法
- ソースコードでの診断(静的解析)
- 監査人個人のプログラミング能力に依存してしまう
- ツールを使って(ある程度)診断を自動化する(動的解析)
- OWASP ZAP は、動的分析のツール
- ソースコードでの診断(静的解析)
- 診断の順番
- 動的解析 → 静的解析
- 注意点
- 擬似的にもサイバー攻撃を行う
- 許可なしにやると犯罪になる。ダメ、絶対。
村上さんからは、脆弱性診断はやって終わりではなく、近年サイバー攻撃の種類が多様化、巧妙化しているため、その危険性をチェックし PDCA を回す必要があるとのことでした。
監査対象の Web サーバ
今回実際に OWASP ZAP で診断する Web サーバの構成を紹介いただきました。
- Linux 上に XAMPP で構築
- XAMPP とは
- クロスプラットフォームで Web アプリケーションに必要な環境が一式揃っている
- GUI で各種サーバの設定・管理できる
- Web サーバ: Apache
OWASP ZAP とは
OWASP ZAP は OWASP ® が OSS として公開しているツールです。近年注目されている OWASP ® というコミュニティから説明いただきました。
- OWASP ® (Open Web Application Security Project オワスプ) とは
- アメリカの Web アプリケーションセキュリティに関するコミュニティ
- 毎年 OWASP Top 10 という危険性の高い情報セキュリティの脅威を発表
- OWASP Japan もある
- OWASP ® のドキュメントの翻訳やカンファレンスの開催
- 脆弱性診断士という独自資格もある
- OWASP ZAP とは
- Proxy サーバとして振る舞う
- リクエスト先の Web サーバとレスポンスのブラウザの間に入る
- Proxy サーバとして振る舞う
インストールと設定
- 公式サイトからダウンロードしてインストール
- サーバ側: プロキシを設定(ポート番号の設定が必要)
- ブラウザ側: プロキシサーバを設定(ポート番号の設定)
OWASP ZAP の使い方(デモンストレーション)
- Web ブラウザでアクセスしたサイトが、 OWASP ZAP の画面左上エリアの「サイト」に登録されたことを確認
- ここから右クリックで診断(攻撃)できてしまうので、注意が必要
- OWASP ZAP の画面中央上の「クイックスタート」タブで「 Automated Scan 」に URL を指定して診断
これだけで診断ができるとは、これはとっても簡単ですね。
その他にも、 Web サーバの様々なディレクトリを総当りで探して、リクエストを投げるという、簡単な DoS 攻撃もできます(なにそれめっちゃ怖い)。

診断結果
さきほど XAMPP で立てた Web サーバを指定すると、下エリアの「アラート」タブにセキュリティのアラートが表示されました。
- 「 X-Frame-Options ヘッダの欠如」
- 「 Web ブラウザの XSS 防止機能が有効になっていません」
- 「 X-Content-Type-Options ヘッダの設定ミス」

これらについては、後から診断の分析のところで説明されます。
脆弱性診断モードの違い
「サイト」から簡単に診断(攻撃)できてしまうので、うっかり事故を防ぐための「脆弱性診断モード」を、画面左上、「サイト」の上のドロップダウンリストから設定できます。
- セーフモード:普段はこれにしておくのがよい
- 「セーフモード」にすると右クリックから「攻撃」が無効になる
- 「セーフモード」にすると右クリックから「攻撃」が無効になる
- 標準モード、プロテクトモード:診断するときだけこれにする
- 「プロテクト」では「攻撃」は無効だが Automated Scan は使える
- 攻撃モード:基本的に使わない。アクセスした Web ページを自動的に診断(攻撃)してしまう
レポート の分析
ここからは先程の診断レポートの見方を紹介いただきました。
- アラートが表示されても、あくまで攻撃される可能性があるということ(スグに攻撃されるということではない)
- アラートが出てからそれを調べるのが重要な作業
そこで、診断の分析や、診断結果による改善について学びます。
- リクエストとレスポンスのヘッダの分析が重要
- リクエストヘッダ
- User-Agent, Pragma, Content-Control など
- レスポンスヘッダ
- HTTP のステータスコードは重要
- 200:正常
- 400 番台や 500 番台などが出たら分析が必要
- HTTP のステータスコードは重要
レポート から改善
ここで、さきほど 3 つ表示されたアラートのうち, 2 つの脆弱性と対応方法を紹介いただきました。
- 「 X-Frame-Options ヘッダの欠如」
- X-Frame-Options ヘッダが、レスポンスヘッダに入っていない
- フレームを使ったクリックジャッキングを防ぐためのもの
- (対応策) レスポンスヘッダの X-Frame-Options プロパティに適切なものを設定する
- 「 Web ブラウザの XSS 防止機能が有効になっていません」
- X-XSS-Protection ヘッダが、レスポンスヘッダに入っていない
- クロスサイトスクリプティング( XSS )を防ぐためのもの
- (対応策)サーバ側からブラウザに XSS フィルタの設定を強制する
アラート表示の詳細を見ると、対策する設定も載っています。これを参考にして設定することができます。

これは便利ですね。
まとめ
Web アプリケーションの脆弱性診断を、実際にデモンストレーションして、そのやり方を解説いただきました。
これを実際、手作業で確認しようとすると、とても時間がかかる上に、抜け漏れが発生しそうです。これを OWASP ZAP を使うとボタン一つで診断できますので、とってもありがたいものでした。
ただ逆に、このツールを使えば、攻撃側も脆弱性を見つけやすくなるので、村上さんがおっしゃったように、一度診断して終わりではなく、定期的に診断してしっかりと改善することが重要なことがわかりました!
Web アプリケーションのリリース前にセキュリティチェックをする開発者やプロジェクトマネージャだけでなく、情報システム部門でシステムを運用する方にも、とてもオススメです!!
label SEカレッジを詳しく知りたいという方はこちらから !!

IT専門の定額制研修 月額28,000円 ~/ 1社 で IT研修 制度を導入できます。
年間 670 コースをほぼ毎日開催中!!

SEプラスにしかないコンテンツや、研修サービスの運営情報を発信しています。