外部公開サービス
外部からの初期調査は、ポート番号を眺めるためではなく、次の分岐を決めるために行う。ここでの対象は、公開ポート、名前ベースのルーティング、Web の入力面である。
証拠の分け方はLinux の概要のラベルに従う。シェルを得たあとの内部サービスはネットワークと IPCで調べる。
全ポートと名前ベースルーティング
Section titled “全ポートと名前ベースルーティング”追加確認例:
nmap -sS -A -p- --min-rate 10000 <TARGET_IP>curl -i http://<HOSTNAME>/ffuf -u http://<HOSTNAME>/ -H "Host: FUZZ.<DOMAIN>" -w <WORDLIST> -ac- 目的: 外部公開サービス、HTTP のリダイレクト、仮想ホスト、SSH の有無を確認する。
- 前提条件: HTB など許可された対象であること。
-p-は負荷があるためラボ外では使わない。 - 何を確認しているか:
22/tcp、80/tcp、443/tcpに加え、8080、8888、9100、3000などの非標準ポート、HTTP のページタイトル、Server ヘッダー、リダイレクト先。 - 期待される出力:
Did not follow redirect to http://name.htb/、HTTP 401/403、仮想ホストによってステータスや応答サイズが変わる結果。 - 出力の解釈: リダイレクト先の名前は
/etc/hostsに追加して確認する候補になる。仮想ホストは同じ IP 上の別アプリを示す。外部でfilteredだったポートは、侵入後にローカルから再確認する。 - 失敗した場合の切り分け: DNS と hosts、VPN の IP、HTTP と HTTPS、Host ヘッダー、
-acの誤補正、共通レスポンスによるフィルタを確認する。 - 代替コマンド:
rustscan,masscan,curl -H 'Host: ...',feroxbuster --dont-filter。 - 状態変更: 原則なし。大量のスキャンやファジングはログと負荷を生む。
リダイレクト先や Host ヘッダーによって応答のステータスやサイズが変わる場合は、名前に応じて別のサイトへ振り分けられている可能性がある。リダイレクト先の名前を /etc/hosts に追加し、その名前で調査し直す。
ファイル共有とメール
Section titled “ファイル共有とメール”NFS などの公開共有やメールは、別のホスト名、アカウント、アプリの場所を示す手掛かりになる。共有内の URL とアカウント名を、Web の入力面と合わせて記録する。共有上のファイルを変更した場合は、その内容も記録する。
Web の入力面
Section titled “Web の入力面”追加確認例:
feroxbuster -u http://<HOSTNAME>/ -w <WORDLIST> -d 1curl -i http://<HOSTNAME>/<PATH>grep -RniE 'fetch|ajax|nonce|upload|api|token|encrypt|decrypt|action' <DOWNLOADED_JS_DIR>- 目的: 認証、アップロード、管理 UI、API、フロントエンドに露出した設定を見つける。
- 前提条件: 取得したファイルの保存先と、対象側のパスを混同しない。
- 何を確認しているか: nonce、暗号鍵、API の操作、ファイルアップロード、管理者 bot、機械学習モデルの登録機能、アーカイブ処理。
- 期待される出力: JS 内の
admin-ajax.php、nonce、ENCRYPTION_KEY、/predict、/upload_*、/api/...。 - 出力の解釈: フロントエンドに含まれる値は秘密情報として扱えない。保存型 XSS やモデルの読み込みなど、別の権限で動く処理につながるかを調べる。
- 失敗した場合の切り分け: SPA のバンドル、ソースマップ、仮想ホストの違い、Cookie の有無、HTTP と HTTPS の違いを確認する。
- 代替コマンド:
httpx,katana,subjs、browser devtools。 - 状態変更: GET 中心なら原則なし。POST やアップロードの検証で作成したものは、後片付けの対象として記録する。
入力がどのプロセスに渡るかは、独自コードの信頼境界でデータフローとして書く。

