Webアプリケーションのペネトレーションテスト手順

1. 情報収集フェーズ

1.1 テスト対象の特定

このフェーズでは、対象となるWebアプリケーションやシステムの範囲を明確にし、関連する技術スタック(IPアドレス、ドメイン、OS、Webサーバ、フレームワークなど)を把握する。以下のツールが情報収集に有効である:

ツール名用途
Nmapポートスキャンおよびサービス識別
Whoisドメイン登録者情報の取得
Recon-ngターゲットのデジタル資産収集
Shodanインターネットに公開されたデバイス・サービスの検索
Google Hacking Database (GHDB)誤って公開されたファイルや設定の検出
Social-Engineer Toolkit (SET)人的要因を利用した情報収集

1.2 対象情報の収集

以下のような情報を体系的に収集する:

  • ドメインとIPアドレス:主サイト、メールサーバ、FTPサーバなどのサブドメインを列挙
  • ICP登録情報:中国国内サイトの場合、登録番号や事業者名を確認
  • SSL/TLS証明書:発行機関、有効期間、証明書タイプ(DV/OV/EV)を記録

1.3 情報の分析

収集したデータを整理し、攻撃面の特定に活用する。主な分析項目とその手法は以下の通り:

収集対象収集手法
IPアドレスとオープンポートping + Nmapスキャン
サーバ種別・OSバナー収集・フィンガープリント解析
サブドメイン・ディレクトリSublist3r, Dirsearch などの列挙ツール
機密ファイル(例: .env, backup.zip)辞書ベースのパス探索
管理者情報・組織構造LinkedIn、GitHub、企業サイトからの推測
使用ライブラリ・CMSプラグインWappalyzer や BuiltWith の利用
既知の脆弱性履歴CVEデータベースやExploit-DBの検索

2. 脆弱性スキャンフェーズ

2.1 スキャン範囲の定義

スキャン対象(IP/ドメイン)、対象ポート(80, 443, 21, 22など)、スキャン深度(軽量・標準・詳細)、認証の有無、実施頻度(日次・週次)を事前に決定する。

2.2 スキャナの選定と実行

代表的なツールとその使用例:

  • Nessusnessuscli scan --target <IP>
  • OpenVASgvm-cli socket --xml "<start_scan><target><hosts><IP></hosts></target></start_scan>"
  • Nmapnmap -sV --script vuln <target>
  • Burp Suite:Target → Site map → 右クリック → "Active Scan"
  • Metasploit
    msfconsole
    use auxiliary/scanner/http/options
    set RHOSTS <target>
    run

2.3 スキャン結果の検証

検出された脆弱性を手動で再現し、誤検知を除外。検証済みの結果を以下形式で記録:

脆弱性名カテゴリ検証結果
SQLインジェクション入力検証不備再現可能
CSRFセッション管理不備再現可能
XXEXML処理不備再現不可

3. 脆弱性悪用フェーズ

3.1 攻撃対象の確定

Nmapによるフルポートスキャンでサービス構成を把握:

nmap -sS -p- -T4 <target_ip>

3.2 悪用ツールの選択

ツール用途コマンド例
Metasploitエクスプロイト実行use exploit/windows/smb/ms17_010_eternalblue
sqlmapSQLi自動化sqlmap -u "http://test.com/page?id=1" --dump
Burp Suiteリクエスト改ざんProxy → Intercept で手動操作
Hydraブルートフォースhydra -l admin -P /wordlist.txt target http-post-form "/login:username=^USER^&password=^PASS^:F=incorrect"

3.3 実際の悪用プロセス

ステップ内容
対象脆弱性選定検証済みのSQLインジェクションを採用
環境情報収集DBMS種別(MySQL/PostgreSQL)、バージョン確認
ペイロード作成UNIONベースのクエリ設計
実行sqlmapまたは手動で注入
痕跡削除アクセスログ内の異常リクエストを除去

4. 権限昇格フェーズ

4.1 権限の向上

シェル取得後、より高い権限(root/Administrator)を獲得するための手法:

手法概要
カーネルエクスプロイトLinuxのDirty COWやWindowsのPrintNightmareなど
サービス権限昇格高権限で動作するサービスの脆弱性利用
設定ミスの活用SUIDビット付き実行ファイルの悪用
パスワード再利用取得した資格情報の横展開

4.2 機密情報の探索

  • /etc/passwd, /etc/shadow の読み取り試行(Linux)
  • バックアップファイル(.bak, .old)の探索
  • 未認証でアクセス可能な管理画面(/admin, /phpmyadmin)の確認
  • データベースからユーザー資格情報の抽出

5. 痕跡隠蔽フェーズ

5.1 ログの削除

主要なログファイルを消去:

rm -f /var/log/auth.log /var/log/syslog /var/log/apache2/access.log
コマンド目的
history -cシェル履歴のクリア
shred -u ~/.bash_history履歴ファイルの完全削除

5.2 全体的な痕跡除去

対象対応
一時ファイル/tmp, /var/tmp 下の作業ファイル削除
イベントログ(Windows)wevtutil cl Security
ダウンロード済みエクスプロイト取得したスクリプトやツールの削除

6. レポート作成フェーズ

6.1 脆弱性の集約

脆弱性深刻度証拠対策
SQLインジェクション' OR '1'='1プリペアドステートメントの導入
反射型XSS<img src=x onerror=alert(1)>出力エンコーディングの実装

6.2 分析と提言

リスクに基づき修正優先度を設定。例:

  • 高:即時対応(24時間以内)
  • 中:1週間以内に対応
  • 低:次回メンテナンス時に修正

6.3 レポート構成

  1. 概要:テスト目的・範囲・期間
  2. 環境:テスト対象のネットワークトポロジとソフトウェアバージョン
  3. 手順と結果:各フェーズの詳細と発見事項
  4. リスク評価:CVSSスコアとビジネス影響
  5. 推奨対策:コード修正例や設定変更手順
  6. 付録:スクリーンショット、PoCコード、RAWリクエスト

タグ: penetration-testing web-security vulnerability-scanning sql-injection XSS

6月22日 17:13 投稿