本書を手に取っていただき、誠にありがとうございます。
本書は、Webアプリケーションの脆弱性診断において世界中で使用されているふたつのツール「OWASP ZAP」と「Burp Suite」の機能を比較しながら、脆弱性診断の進め方や具体的な手法の基礎を学ぶことを目的としています。
そもそもの執筆のきっかけは、筆者が主催しているOWASP ZAPハンズオンセミナー「脆弱性診断ええんやで(^^)1 」にて多く寄せられる、「OWASP ZAPとBurp Suiteの無償版はどちらを使ったらいいのか」や「Burp Suiteの無償版と有償版の違いは何か」などのご質問に答えるために執筆しました。
本書に記載された内容は、情報の提供のみを目的としています。したがって、本書を用いたツールの検証や脆弱性診断作業は、必ずご自身の責任と判断によって実施してください。本書の情報によるツールの検証や脆弱性診断作業の結果について、筆者はいかなる責任も負いません。
本書に記載されている会社名、製品名などは、一般に各社の登録商標または商標、商品名です。会社名、製品名については、本文中では©、®、™マークなどは表示していません。
本書の一部または全部について、筆者あるいは脆弱性診断研究会からの文書による許諾を得ずに、いかなる方法においても無断で複写または複製することは法律により禁じられています。
本書では、次のバージョンのOWASP ZAPおよびBurp Suiteを使用しています。
ツール | バージョン |
OWASP ZAP | Version 2.12.0 |
Burp Suite Community Edition | v2023.1.2 (stable) |
Burp Suite Professional | v2023.1.2 (stable) |
それぞれのツールのバージョン確認方法は次のとおりです。
メニューの「ヘルプ」>「OWASP ZAPについて」で表示されるダイアログにバージョンが記載されています。
メニューの「Help」>「About」で表示されるダイアログにバージョンが記載されています。
なお、執筆時期の都合により、一部、旧バージョンのツールのキャプチャを使用しています。
OWASP(The Open Worldwide Application Security Project)1は、2000年に創設されたソフトウェアのセキュリティ向上のために活動している国際的でオープンな非営利のコミュニティです。OWASPのさまざまなプロジェクトには誰もが自由に参加して活用できます。
世界中の国や地域にOWASPの活動拠点「OWASP Local Chapter」が多数存在しています。
日本にも複数のOWASP Local Chapterがあります。
筆者は首都圏を活動拠点とするLocal Chapterの「OWASP Japan」のプロモーションチームに所属しています。
ウェブサイト
https://owasp.org/www-chapter-japan/
OWASP ZAP (OWASP Zed Attack Proxy)は脆弱性診断ツールです。プロキシとして動作してブラウザとウェブアプリケーション間の通信の閲覧および改変が可能です。OWASP ZAPはオープンソースであり、ライセンスはApache License Version 2.02です。商用・非商用問わず無償で利用可能です。
公式サイト
OWASP ZAPは、とある民間企業が公開していた「Paros」という名前のツールが元になっています。OWASP ZAPのソースコードのパッケージ名などに「paros」という名称が今でも残っています。
PortSwigger社が開発している「Burp Suite」は、Webアプリケーションの脆弱性診断に使用されるツールです。Burp SuiteにはWebアプリケーションの脆弱性診断に必要なさまざまな機能が実装されています。
Burp Suiteには以下のような機能があります。
Proxy
Webブラウザからの通信をプロキシとして中継して、HTTPやHTTPSの通信内容を解析・修正できます。Webアプリケーションが受け取ったリクエスト・レスポンスをリアルタイムで確認可能です。
Intercept
プロキシ機能で中継される通信内容をユーザーが手動で修正できる機能です。これにより、Webアプリケーションの動作確認や脆弱性の検証などを行うことができます。
Repeater
Scannerなどで検出した脆弱性を検証するための機能です。Scannerで検出されたリクエストを取り出し、そのリクエストを変更して複数回送信することで脆弱性を検証できます。
Scanner
Webアプリケーションに対して、自動的に脆弱性診断を実施するツールです。SQLインジェクションやクロスサイトスクリプティング(XSS)などの脆弱性を検出するための機能を備えています。
Burp Suiteはこれらの機能に加え多彩な拡張機能を提供しており、Webアプリケーションの脆弱性診断に欠かせないツールとして広く利用されています。
PortSwigger社は2004年にDafydd Stuttardによって設立されました。本社はイギリスのナッツフォードにあります。
ウェブサイト
Burp Suite Community Editionは、無償の脆弱性診断ツールです。自動的に脆弱性を診断するScannerは省略されていますが、InterceptやRepeaterなどの基本的なツールが実装されています。
Burp Suite Professionalは、有償の脆弱性診断ツールです。Burp Suite Community Editionに実装されている機能に加えて、本格的な脆弱性診断の実施に有益なScannerやレポート作成などの機能が実装されているため、世界中で多くの脆弱性診断のプロが使用しています。
次の文章は、総務省のウェブサイト「脆弱性(ぜいじゃくせい)とは?|どんな危険があるの?|基礎知識|国民のための情報セキュリティサイト1 」より引用したものです。
脆弱性(ぜいじゃくせい)とは、コンピュータのOSやソフトウェアにおいて、プログラムの不具合や設計上のミスが原因となって発生した情報セキュリティ上の欠陥のことを言います。
脆弱性が「プログラムの不具合や設計上のミス」であるならば、一般的な開発手法に則ってテストを実施することにより、製品のリリース前に脆弱性を検出して正しく修正することができるはずです。しかし、実際には、ウェブサイトやスマートフォンアプリケーションが世の中に正式にリリースされてから脆弱性が発見される事例が後を絶ちません。
確かに、脆弱性はプログラムの不具合なのですが、正常系テストだけでは発見するのが難しく、異常系テストでもテストの方法によっては見落としがちです。
脆弱性を検出するには「ひと工夫」が必要です。
脆弱性診断とは、異常系テストにひと工夫を加えた「ちょい足し異常系テスト」です。
たとえば、ログインが必要なウェブサイトでログインIDを入力するフォームをテストするとします。このとき、ログインIDとして「O'Reilly」を入力してみます。「O'Reilly」に含まれる「'(シングルクォーテーション)」は、SQLの文法上、特別な意味を持つ文字として取り扱われます。このため、ログイン処理にSQLインジェクション脆弱性が存在している場合、内部エラーが発生して画面にエラーメッセージが表示されるかもしれません。
次図は脆弱性診断演習用ウェブサイトである「OWASP Mutilledae Ⅱ2」のログインフォームの名前入力欄に「O'Reilly」と入力して送信した例です。SQLインジェクション脆弱性がログイン処理に存在しているため、フォーム送信後の画面にデータベース処理に関連するエラーメッセージが表示されました。
本例ではログインフォームの名前入力欄に特定の記号を含む文字列を入力して送信しただけで、脆弱性を検出することができました。しかし、実際に脆弱性を検出しようとした場合、対象ウェブサイトのすべてのフォームについて、ブラウザだけを使用して手作業で「ちょい足し異常系テスト」を実施するのは、多大な時間がかかってしまうため現実的ではありません。
そこで、脆弱性診断を生業としているセキュリティエンジニアは、「ちょい足し異常系テスト」を効率よく実施するために「OWASP ZAP」や「Burp Suite」などの脆弱性診断ツールを使用しています。