PR 本記事には広告(Amazonアソシエイト・もしもアフィリエイト・A8.net等)が含まれます。掲載情報の正確性には努めていますが、商品の詳細は必ずリンク先で最新情報をご確認ください。

【ディレクトリ列挙編】リンクされてない隠しエンドポイントを掘る|CTF思考フレームワーク R04

【ディレクトリ列挙編】リンクされてない隠しエンドポイントを掘る|CTF思考フレームワーク R04 アイキャッチ画像
安全に生きたい編集部

ディレクトリ列挙って、URLを総当たりするやつ?🔓

そうです。/admin、/backup、/.git、/.env など、リンクされていない隠しエンドポイントを、辞書攻撃で発見します。ffuf・dirsearch・gobuster ――この種のツールで、開発者が忘れたバックアップファイルや、設定ファイルが見つかります。

ディレクトリ列挙は、Webサーバ上の隠しエンドポイントを総当たり発見する技術。/admin、/backup、/.git、/.env、/wp-config.php.bak など、リンクされていないがアクセス可能なファイル・パスを発見します。SecLists の辞書と ffuf/dirsearch/gobuster の組み合わせが定番。

広告・PRを含みます。この記事にはアフィリエイトリンクが含まれます。掲載内容は編集方針に基づいて作成していますが、価格・在庫・キャンペーン内容はリンク先で最新情報を確認してください。

.gitフォルダが公開されちゃってるサーバーもあるの…?

この記事は、CTF思考フレームワーク Recon編 R04。ディレクトリ列挙の基本ツール(ffuf・dirsearch・gobuster)と、SecLists の使い方、自社サーバーから漏れる『忘れ物』のチェック方法を整理します。

ディレクトリ列挙(コンテンツディスカバリ)は、サイトに「リンクされていない隠しURL」を見つける作業。/admin、/api/internal、/backup.zip、/.env… 公開してるつもりじゃなかったものが、実は外から叩ける状態で残っている、というのがWebの永遠のあるあるです🗂️

リンクされてないから安全、は最大の勘違い。攻撃者は最初から「隠してるはずの場所」を探しに来ます。

この記事で出てくる言葉

先に意味を押さえておくと読みやすい用語です。

  • CTF: セキュリティの練習問題を解く競技。必ず許可された環境だけで試します。
  • 認証: 本人かどうかを確認する仕組み。パスワード、SMS、アプリ承認などがあります。
この記事の難易度

難易度:★☆☆(初級) / この枝ルートの記事は、必要な回だけ選んで読めます。

👀 観察フェーズ:まず何を見る?

存在チェックの「肯定的応答」と「否定的応答」の差を見極めることが、ファジングの精度を決めます。

🤔 仮説フェーズ:攻撃者は何を考える?

攻撃者は「リンクされていないだけで存在は残っているパス」を頭に思い浮かべます。代表は /admin、/api/v1/internal、/backup.zip、/wp-config.php.bak、/.git/config、/.env、/swagger.json あたり。さらに『このサービスは Laravel っぽいから /storage/logs/laravel.log が読めるかも』『Rails 系なら /rails/info/routes が出るかも』とフレームワークの癖まで推測してから辞書を選びます。レスポンスサイズや応答時間のわずかな差から「ある/ない」を判定するので、404 を 200 で返す独自実装にも騙されません。

ディレクトリ列挙は「経験的によくあるURLリスト」が物を言う世界。SecListsを覚えるとぐっと効率上がります。

🔬 検証フェーズ:どうやって確かめる?

実行手順はおおよそ三段階です。まず『ffuf -u https://target/FUZZ -w SecLists/Discovery/Web-Content/raft-small-words.txt -mc all -fs 』のように、存在しないパスのサイズを除外しながら一次列挙します。次に当たったディレクトリに対して再帰的に深掘りし、feroxbuster なら -r オプション、ffuf なら手動で -recursion を回します。最後に拡張子を変えて『-e .bak,.zip,.tar.gz,.old,.swp』で同名ファイルの忘れ物を狙う、という流れです。429 や WAF を踏まないよう -p 0.1 で間引いたり、-H “User-Agent: …” を本物ブラウザに寄せるのも実戦では重要です。

⚔️ 攻撃フェーズ:実際の手口

古典的だが今も刺さるのが .git ディレクトリの公開です。/.git/HEAD が 200 で返れば、git-dumper でリポジトリ全体を復元でき、コミット履歴から DB パスワードや S3 のキーがそのまま読み出せます。もう一つ多いのが、リリース前に作った backup.zip や db_dump_2024.sql.gz の置き忘れ。/backup/、/old/、/_old/、/v1/ の下に潜んでいることが多く、辞書に企業名や西暦を混ぜると一気に当たります。Swagger UI が /api-docs や /v3/api-docs で素っ裸になっているケースも依然として頻発し、そこから内部 API への足掛かりが取られます。

CTF{not_linked_does_not_mean_not_reachable}

「リンクされていない=隠れている」は幻想。攻撃者は最初から定番パスを総当たりします。

🛡️ 防御フェーズ:どう守る?

防御は「外から見える表面積を減らす」と「叩かれていることを検知する」の二本立てが基本です。前者では、.git や .env を Web ルート外に置く、Nginx で『location ~ /\. { deny all; }』のようにドットファイルを 403、本番に Swagger UI を出さない、バックアップは S3 など別ストレージへ送る、といった構成上の手当てを徹底します。後者では、本番には絶対に存在しないハニーポットパス(/admin-old/、/.env.bak など)を仕込み、そこに来た IP を WAF で即遮断するルールが効果的です。さらに自社向けに SecLists を月次で回し、攻撃者と同じ辞書で先回り点検するのが結局いちばん漏れが少ない方法です。

🧪 自分で検証ラボを作る

Reconコマンドを安全に試すには、自分専用の検証ラボが一番。🏗️ ConoHa VPSなら月額数百円からLinux環境を立てられ、nmapやgobusterなどのツールを「自分のサーバ」に打ち込んで安全に試せます。

PR / 広告

ConoHa VPS

※ 上記は他社サービスへのリンクです。購入は各自でご判断ください。

⚠️ よくある落とし穴

現場でよく見るのは、本番リリース時に「あとで消す」と置いた backup.zip がそのまま残るケースと、SPA の build 成果物と一緒に .git をデプロイしてしまうケースです。どちらも CI から「公開ディレクトリに .git/ や *.zip があったらビルド失敗」というガードを入れるだけで防げますが、ガードが無いまま属人運用に頼っているチームが多数派です。また Honeypot パスを置かずにファジングを完全スルーしているサイトも多く、攻撃者が一晩中辞書を回しても 1 行もアラートが上がらない、という事態がしばしば起きます。

  1. 本番Webルートに .git ディレクトリを残す(よくある事件)。
  2. データベースバックアップを「一時的に」公開ディレクトリに置いて忘れる。
  3. Swagger UI を本番でも認証なしで公開。
  4. エディタの一時ファイル(.swp、~ 末尾)を削除せずデプロイ。
  5. Honeypotパスを設置せず、ファジングを検知できない。
  6. SecListsを使ったテストを自社向けに実施していない(攻撃者は使ってる)。

🧰 ツール早見表

ディレクトリ列挙まわりは、用途別にツールを使い分けるのがコツです。一次列挙の速度と精度なら ffuf、深掘りや大規模なら Rust 製の feroxbuster、辞書は SecLists の Discovery/Web-Content 配下を基準にし、.git 漏洩が見つかったら git-dumper でソース復元、.env や Swagger のような既知エクスポージャは nuclei の exposures テンプレートで網羅的に拾います。CTF と業務監査どちらでも、この組み合わせで大体の課題はカバーできます。

ツール用途ひと言
ffuf高速ファジング現代の標準
feroxbuster再帰的ディレクトリ列挙Rust製、深掘り強い
SecListsワードリストの宝庫Discovery/Web-Content 配下が要
git-dumper.git からソース復元ディレクトリ漏洩からソース取得
nuclei + exposures templates機微ファイル検出テンプレート豊富

🎓 本気で学びたい人へ

Recon・OSINTを絵空事だけで終わらせず、セキュリティエンジニアをキャリアとして目指したい方に。🎓 ササエルは現場で使えるスキルを体系的に学べるスクールです。

PR / 広告

ササエル

📚 もっと深く学びたい人へ

体系的に攻撃と防御の両面を学びたいなら『ホワイトハッカー入門 第2版』が分かりやすい入口です📚

📚 次に読みたい

✍️ 学んだことを発信する

セキュリティブログを自分で始めたい方へ。🌐 ConoHa WINGなら初期費用無料でWordPressを起こせ、学んだことをアウトプットしていけます。

PR / 広告

ConoHa WING

⚖️ 大事なお約束

記事URLをコピーしました