Webアプリの脆弱性診断は、才能やセンスの世界ではありません。**再現可能な「方法論」**です。優れた診断者は、ひらめきで脆弱性を見つけるのではなく、攻撃クラスの地図を持ち、一つずつ体系的に潰していく。本記事は、その地図と方法論を PortSwigger Web Security Academy と OWASP に忠実に示し、各攻撃手法を深掘りするスポーク群への入口とするピラー記事です。
本クラスタの絶対の前提(先に読んでください) ここで扱う攻撃手法は、すべて3つの安全地帯——①自分の資産 ②CTF ③書面で許可されたスコープ——の中だけで実行します。これは ホワイトハッカーと法律 で定めた一線です。ペイロードを1つ間違えるより、向ける先を1つ間違える方が、はるかに重大です。手を動かす環境は 自宅の合法ラボ(localhost限定の OWASP Juice Shop)を前提に進めます。
1. 診断方法論 — 5つのフェーズ
プロの診断は、毎回同じ「型」で回します。考えることを減らし、見落としを構造的に防ぐためです。
| フェーズ | やること | 主なツール |
|---|---|---|
| ① 偵察(Recon) | 対象の技術スタック・サブドメイン・公開資産を把握 | nmap・各種OSINT・ブラウザ |
| ② マッピング | アプリの全エンドポイント・パラメータ・認証境界を洗い出す | Burp Suite のProxy/Site map |
| ③ テスト | 各攻撃クラスの仮説を1変数ずつ検証 | Burp Repeater / Intruder |
| ④ 悪用(Exploit) | 脆弱性の影響を安全に実証(PoC) | Repeater・専用ツール |
| ⑤ 報告(Report) | 再現手順・影響・修正案を記録 | レポート・スクリーンショット |
このうち最も時間をかけるべきは②マッピングです。攻撃面(attack surface)を漏れなく把握しなければ、どんなに上手にテストしても穴は見つかりません。「見えていない入口は、テストできない」——これが診断の鉄則です。
2. 攻撃クラスの地図 — 3層で捉える
PortSwigger Web Security Academy は、脆弱性を学習難易度順に3層へ整理しています。本クラスタもこの構造に沿って深掘りします。
2.1 サーバーサイド(まず学ぶべき土台)
サーバー上で何が起きるかだけ理解すればよく、初学者に最適です。
- SQLインジェクション — クエリに介入しDBを読み書きする。UNION・ブラインド・時間ベース。
- OSコマンドインジェクション — サーバーのシェルに任意コマンドを送り込む。
- SSRF — サーバーに内部リソース(クラウドメタデータ等)へリクエストさせる。
- サーバーサイドテンプレートインジェクション(SSTI) — テンプレート構文を注入しRCEへ。
- アクセス制御の不備(IDOR) — 他人のリソースに触れる。OWASP A01、最頻出。
- パストラバーサル / ファイルアップロード / XXE / NoSQLi
2.2 クライアントサイド
ブラウザ側の挙動を悪用します。
- クロスサイトスクリプティング(XSS) — 反射・蓄積・DOM。被害者のブラウザでJSを実行。
- CSRF / CORSの設定不備 / クリックジャッキング / WebSockets
2.3 高度なトピック
より広い前提知識を要します。
- JWT攻撃 — 署名検証の不備・alg混同・鍵ブルートフォース。
- 認証の脆弱性 — 列挙・総当たり・2FAバイパス。
- 安全でないデシリアライズ / HTTPリクエストスマグリング / GraphQL / Webキャッシュポイズニング / プロトタイプ汚染 / Web LLM攻撃
何を優先して探すかの羅針盤は、常に OWASP Top 10:2025 です。実環境でもCTFでも、A01「アクセス制御の不備」とA03「インジェクション」が圧倒的に頻出します。
3. ツールは方法論に従属する
初学者ほど「どのツールを使うか」に目が行きますが、ツールは方法論の道具にすぎません。中心にあるのは常に Burp Suite のような割り込みプロキシで、通信を観察し → 仮説を立て → 1変数だけ変えて再送し → 差分を観察するという反復です。
# 方法論の核:1つの仮説を、1つの変数で検証する(Burp Repeater)
GET /api/orders/1023 HTTP/1.1 # ← 仮説:「IDを変えたら他人の注文が見えるのでは?」
Host: lab.example # 自分のlab/許可スコープのみ
Authorization: Bearer <自分のトークン>
# 1023 → 1024 に変えて再送。レスポンスの差分が、脆弱性の有無を語る。
自動スキャナ(Burp Scanner / OWASP ZAP)も重要ですが、役割が違います。
- 自動化できる(水平統制): XSS・SQLi・既知パターンの注入・ヘッダ不備。網羅検出はツールの土俵。
- 自動化できない(縦のリスク): IDOR・認可ロジックの正しさ・テナント越境・業務ルールの破れ。「それが仕様違反か」は人間の業務理解でしか判断できない。
4. 攻撃と防御は同じコインの裏表
本クラスタの各スポークは、「どう攻撃するか」を解説した直後に、必ず「どう設計で防ぐか」を対で示します。これは単なる良心ではなく、最も価値ある診断者は防御を設計できる人だからです。
| 攻撃クラス | 攻撃の本質 | 設計での防御 |
|---|---|---|
| SQLi | クエリ構造への入力混入 | パラメータ化クエリ(プレースホルダ) |
| XSS | 出力時のコンテキスト無視 | 文脈別の出力エンコード + CSP |
| SSRF | URLの行き先を入力に委ねる | 許可リスト + メタデータ遮断(IMDSv2) |
| JWT | 署名検証の手抜き | アルゴリズム固定 + 厳格な署名検証 |
| 認証 | 推測可能・列挙可能 | レート制限 + 一定のエラー応答 + MFA |
| SSTI | 入力をテンプレートに連結 | ユーザー入力をテンプレートにしない |
攻撃を理解した人ほど、設計レビューで「ここが破れる」を先回りで指摘できます。私自身、経済産業大臣賞を受賞したB2B SaaS や本番二重課金0件の決済基盤を一人 × 生成AIで作る中で、「速く作る力」と「安全に作る力」は同じコインの裏表だと痛感してきました。
5. このクラスタの歩き方
- まず本ピラーで攻撃クラスの地図と方法論を頭に入れる。
- 環境を 合法ラボ で用意し、Burp Suite をセットアップする。
- 各スポーク(SQLi / XSS / SSRF / JWT / 認証 / SSTI)を、ラボで手を動かしながら読む。
- 力がついたら バグバウンティ で合法に実戦投入する。
6. まとめ
- ハッキングは方法論:偵察→マッピング→テスト→悪用→報告。最も時間をかけるのはマッピング。
- 攻撃クラスを地図で持つ:サーバーサイド → クライアントサイド → 高度。OWASP A01/A03が最頻出。
- ツールは方法論の道具:Burpで1変数ずつ検証。スキャナは網羅、人間は判断。
- 攻めと守りは裏表:各攻撃を、必ず設計での防御と対で理解する。
- 合法の絶対条件は許可:全手順を3つの安全地帯に閉じる。
次は、最頻出かつ最も影響の大きい SQLインジェクション攻撃の完全攻略 から手を動かしていきましょう。
「自社のアプリ、これらの攻撃に耐えられるか不安」という方へ。 ここで扱う攻撃クラスを、あなたのアプリで実際に再現・診断し、設計から修正するところまで承ります。まずは無料OSSで現状を可視化することもできます。記事末尾のリンクからお気軽にご相談ください。