オライリー・ジャパンより「実践 Webペネトレーションテスト」という書籍を出版しました。

本の表紙

(表紙はモモンガでもムササビでもなく、ヒヨケザルという動物です。)

本書の内容

ペネトレーションテスト(侵入テスト)はシステムに対する擬似的な攻撃を行うことですが、本書ではWebアプリケーションを対象としたものを特にWebペネトレーションテストと呼んでいます。 本書はこのWebペネトレーションテストの手法を実践的に学ぶことができる書籍で、Webアプリケーションやネットワークの基礎的な知識が必要となるものの、セキュリティエンジニアのみならず、Webアプリケーションの開発に携わる方にとっても楽しめる内容となっています。

構成としては、「第I部 実践編」と「第II部 発展編」の2部に分かれています。 「第I部 実践編」では、Webペネトレーションテストに必要な技術を紹介し、ハンズオン環境で侵入してから攻撃を展開するところも体験できるようになっています。 「第II部 発展編」では、実践編には収めきれなかったものの、重要なトピックを収録しています。

  • 第I部 実践編
    • 1章 Webペネトレーションテストラボの環境構築
    • 2章 偵察活動 - アタックサーフェスの調査
    • 3章 アプリケーションへの攻撃 - 目的達成のための脆弱性調査
    • 4章 攻撃シナリオの実行 - 脆弱性を組み合わせた攻撃の実践
  • 第II部 発展編
    • 5章 ソースコード解析による脆弱性調査
    • 6章 クラウドサービスの調査
    • 7章 制限の回避と突破

目次のとおり、技術書ですので実務的な観点よりも技術的な観点を中心にしています。 また、具体的なツールの使用方法はほどほどに、その原理や目的が理解できることを重視して執筆しました。

例えば「2章 偵察活動」では、特に対象スコープが広いWebペネトレーションテストで最初に実施する、偵察活動を紹介しています。 偵察活動で必要な作業は自動化できるものが多く、実際のところはツールを実行することが主流といったことも聞きますが、本書ではそういったツールが実施していることを少し分解して説明しています。

また、「3章 アプリケーションへの攻撃」では、SQLインジェクションやOSコマンドインジェクションのような典型的で有名な脆弱性も紹介していますが、認証に関わる脆弱性、特にパスワードリセット機能の脆弱性のような、個別の実装ロジックによる脆弱性も紹介しています。 加えて、典型的な脆弱性を紹介する際には、脆弱性そのものの内容だけでなく、Webアプリケーションにおいて実際にどういった形で脆弱性を作り込みやすいのかも紹介しています。 これはWebペネトレーションテストやバグバウンティなどで我々が実際に脆弱性を見かける際の、実体験に基づく内容になっています。 逆に、有名ではあるものの、見かけることの少ない脆弱性や、リスクが大きくない脆弱性については解説がなかったりします。

「4章 攻撃シナリオの実行」は本書でも特徴的な章になったのではないかと思います。 この章は、ショッピングサイト(ウェブペンSHOP)というハンズオン環境を対象にして、外部から侵入し攻撃を展開するシナリオを体験できるような内容になっています。 これに関しても、実体験を基にした要素をいくつか取り入れているのですが、1つのWebアプリケーションを前にしてどう取り組んでいくかや、試行錯誤によって道が広がっていく過程を楽しんでもらえると嬉しいです。

ペネトレーションテストという内容の触りとしては、「第I部 実践編」までで実践的に学ぶことができるようになっていますが、実際にペネトレーションテストをする際には幅広い知識や技術が必要になります。 すべてを紹介しているとキリがないのですが、本書では「第II部 発展編」に、こういった知識の中でも特に役に立つと思うものを紹介しています。

個人的には、「7章 制限の回避と突破」の最後に解説する「ブロック暗号に対する攻撃」は、面白い内容になったのではないかと思います。 ブロック暗号はWebアプリケーションでユーザが触れる領域においても実はよく利用されているのですが、一見すると暗号化されたデータはランダムな文字列にしか見えないので、外部からのテストでスルーされてしまうことが多いです。 しかし、いくつかのデータのパターンを比較したりして暗号文の原理を紐解いてみると、そのWebアプリケーションにおける致命的な脆弱性が判明することも珍しくありません。

謝辞

本書の執筆にあたり、2年以上一緒に執筆した著者陣、レビューをしていただいた皆様、編集者の皆様に感謝いたします。 特にレビューに際しては、日本のセキュリティを代表する錚々たる面々にレビューいただけて感謝しかありません。

セキュリティに興味があるエンジニアの方のみならず、Webアプリケーションを開発している方々にとっても、面白いと思ってもらえるような書籍になったのではないかと思います。 ぜひ手に取っていただければ幸いです。