Webアプリケーションは私たちの生活に欠かせない存在となり、オンラインショッピング、銀行取引、医療サービス、教育プラットフォームなど、重要なサービスの多くがWeb上で提供されています。しかし、この利便性の裏側で、Webアプリケーションは攻撃者にとっても魅力的な標的となり、特に個人情報の漏洩や金銭的損失などの深刻な被害が頻繁に発生しています。こうした脅威に対抗するため、近年ペネトレーションテストが注目されています。ペネトレーションテストは、実際の攻撃者と同様の手法を用いて組織のシステムに対して模擬攻撃を行い、攻撃された場合にシステム全体でどの程度の被害が生じるのかを検証するセキュリティテストです。本書は、Webペネトレーションテストの全体の流れを紹介する実践編と、その他の技術を紹介する発展編の2部構成となっています。実践編は環境構築から始まり、基本的な攻撃手法を学んだ後、それらを組み合わせた実際の攻撃シナリオを体験できます。発展編では、さらに深い知識や応用的なテクニック、攻撃手法を扱います。Webぺネトレーションテストのノウハウを網羅的に学べる1冊です。
実践 Webペネトレーションテスト
―攻撃者の視点で学ぶWebアプリケーションセキュリティ
西谷 完太、山崎 啓太郎、渡部 裕 著
目次
まえがき
はじめに
第I部 実践編
1章 Webペネトレーションテストラボの環境構築
1.1 Dockerのインストール
1.2 Burp Suite のインストール
1.2.1 Burp Suite の初期設定
1.2.2 Burp Suite 拡張機能のインストール
1.2.3 HTTPリクエストのキャプチャ
1.3 Webペネトレーションテストラボの作成
1.3.1 Webペネトレーションテストラボ用のシェル環境
1.4 まとめ
2章 偵察活動- アタックサーフェスの調査
2.1 アセットの調査- パッシブ
2.1.1 サービス構成の調査- 利用しているクラウドサービスやサーバの把握
2.1.2 テスト対象組織のネットワーク調査
2.1.3 ドメイン、サブドメインの調査
2.1.4 クローリングされたWebページの探索
2.1.5 サードパーティサービスを利用した調査
2.2 アセットの調査- アクティブ
2.2.1 エンドポイントの探索
2.2.2 WordPress
2.2.3 クラウドストレージの探索
2.2.4 ポートスキャンによる稼働サービスの調査
2.3 まとめ
3章 アプリケーションへの攻撃- 目的達成のための脆弱性調査
3.1 認証の突破
3.1.1 攻撃手法1:漏洩パスワードの利用
3.1.2 攻撃手法2:パスワードリスト攻撃
3.1.3 攻撃手法3:パスワードリセット機能の悪用
3.2 認可制御の不備
3.2.1 ケーススタディ
3.2.2 攻撃手法4:ユーザの個人情報窃取(横型)
3.2.3 攻撃手法5:管理機能の悪用(縦型)
3.3 外部・内部リソース参照機能の悪用
3.3.1 攻撃手法6:SQLインジェクション
3.3.2 攻撃手法7:不正なローカルファイルへのアクセス
3.3.3 攻撃手法8:XML External Entity(XXE)攻撃
3.3.4 攻撃手法9:Server-Side Request Forgery(SSRF)
3.4 サーバへの侵入
3.4.1 攻撃手法10:OSコマンドインジェクション
3.4.2 攻撃手法11:安全ではないデシリアライゼーション
3.4.3 攻撃手法12:Webシェルの設置- ファイルアップロード機能の悪用
3.5 クライアントへの攻撃
3.5.1 攻撃手法13:Cross-Site Scripting(XSS)
3.5.2 攻撃手法14:Cross-Site Request Forgery(CSRF)
3.6 既知の脆弱性調査
3.6.1 脆弱性データベースを利用した既知の脆弱性検索
3.6.2 Exploit コードの調査
3.7 まとめ
4章 攻撃シナリオの実行- 脆弱性を組み合わせた攻撃の実践
4.1 攻撃の組み立て- ゴール達成に向けた方針の検討
4.1.1 攻撃モデル- MITRE ATT&CK
4.2 ウェブペンSHOP環境のセットアップ
4.3 ステップ1 - 対象の調査
4.3.1 ステップ1.1 - 手動調査
4.3.2 ステップ1.2 - ソースコードの調査
4.3.3 ステップ1.3 - ディレクトリサーチ
4.3.4 ステップ1.4 - 情報の整理
4.4 ステップ2 - 管理者への権限昇格
4.4.1 ステップ2.1 - 管理者アカウントの探索
4.4.2 ステップ2.2 - 不正なパスワードリセット
4.4.3 ステップ2.3 - 認証トークンの書き換え
4.4.4 ステップ2.4 - パスワードリセットコードの総当たり
4.5 ステップ3 - 内部ホストへのアクセス
4.6 ステップ4 - 内部ホストへのアクセスを簡単にする
4.7 ステップ5 - アプリケーションサーバへの侵入
4.8 ステップ6 - 機密情報の窃取
4.9 リスクの評価
4.10 まとめ
第II部 発展編
5章 ソースコード解析による脆弱性調査
5.1 ソースコード解析の戦略
5.1.1 脆弱性を探すためのアプローチ
5.1.2 ソースコード解析の主な手法
5.2 ツールを利用した脆弱性調査
5.2.1 手動解析とツール解析
5.2.2 grep などの検索機能の利用
5.2.3 静的解析ツール(SAST)の利用
5.3 フロントエンドのソースコード解析
5.3.1 情報の抽出
5.3.2 ロジックの解析
5.3.3 ブラウザの開発者ツールの利用
5.4 まとめ
6章 クラウドサービスの調査
6.1 過剰な権限が付与されているIAMプリンシパル
6.1.1 AWS認証情報の窃取
6.1.2 ツールを利用した権限の探索
6.2 Amazon Cognito の設定不備
6.2.1 自己サインアップ
6.2.2 属性の書き換え
6.2.3 Identity Pool を介した過剰な権限の付与
6.3 Amazon S3バケットのルール設定不備
6.3.1 バケットリスティング
6.4 まとめ
7章 制限の回避と突破
7.1 アクセス制御の回避
7.1.1 IP アドレスによるアクセス制御の回避- 送信元IP アドレスの偽装
7.1.2 URLパスに対するアクセス制御の回避
7.1.3 CDNのアクセス制限の迂回
7.2 WAFによる攻撃検知の回避
7.2.1 ペイロードの隠蔽
7.2.2 POSTデータのサイズを大きくする
7.3 認証の回避とアカウントテイクオーバー
7.3.1 SAML
7.3.2 OAuth2.0 / OpenID Connect
7.4 暗号による防御機構の突破
7.4.1 JWT(JSON Web Token)
7.4.2 ブロック暗号に対する攻撃
7.4.3 異なるコンテキストでの暗号鍵の使い回し
7.5 まとめ
おわりに
索引
コラム目次
ローカルファイルの読み取りだけではない、便利な関数
ペイロードの自動生成