insecure-source-code-management について
認可済みのセキュリティ評価で、露出したバージョン管理メタデータやバックアップを調べるスキルです。Git、SVN、Mercurial、Bazaar などの検出と復元方法を扱います。
主な機能
- 01Git メタデータの検出と復元
- 02SVN 作業コピーの復元
- 03Mercurial と Bazaar の確認
- 04`.DS_Store` とバックアップの検査
- 05403 と 404 応答の判別
活用シーン
- 01スコープ内サイトのリポジトリファイル確認
- 02取得可能なメタデータからのソース復元
- 03バックアップや設定ファイルの露出調査
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ yaklang/ hack-skills --skill insecure-source-code-managementインストール後、Claude Code で/insecure-source-code-managementを入力して読み込まれたか確認します。
詳細
スキル:安全でないソースコード管理
AI の読み込み指示:このスキルでは、公開されたバージョン管理メタデータ、一般的なバックアップファイル、および関連する設定ミスの検出と復旧について扱います。許可された評価でのみ使用してください。復元した認証情報と URL は機密情報として扱い、スコープを超えて実際のデータを持ち出さないでください。広範な検出ワークフローについては、ワークスペースに存在する場合、recon-for-sec と recon-and-methodology を併せて読み込んでください。
0. クイックスタート
最初に調査する価値の高いパス(GET または HEAD を使用し、レート制限を遵守してください):
/.git/HEAD
/.git/config
/.svn/entries
/.svn/wc.db
/.hg/requires
/.bzr/README
/.DS_Store
/.env
ルーティングに関する注意:まずこれらのパスをすばやく調査してください。完全な偵察ワークフローについては、より詳細なテストの前に recon-for-sec と recon-and-methodology から手法を読み込んでください。
1. GIT の露出
検出
/.git/HEAD— 有効なリポジトリの場合、通常は次のようなプレーンテキストが返されます。
ref: refs/heads/main
/.git/config—remote.origin.url、ユーザー ID、または埋め込まれた認証情報が公開される可能性があります。/.git/index、/.git/objects/— オブジェクトストアへの部分的なアクセスでも、適切なツールがあれば再構築できます。
403 と 404 の違い
404— パスが存在しないか、エッジで完全にブロックされている可能性があります。/.git/への403— ディレクトリは存在するものの、一覧表示が拒否されている可能性があります。それでも、ファイルの URL を直接試してください。
/.git/HEAD
/.git/config
/.git/logs/HEAD
/.git/refs/heads/main
ディレクトリへの 403 と HEAD への 200 の組み合わせは、露出を強く示しています。
復旧ツール(オープンソース)
arthaud/git-dumper— 個々のファイルを取得できる場合に、到達可能な.gitツリーをダンプします。internetwache/GitTools— 不完全または破損したダンプ向けの Dumper、Extractor、Finder モジュールを提供します。WangYihang/GitHacker— 標準的なダンプツールで対応できないエッジケース向けの代替復旧ツールです。
優先して確認するファイル
| パス | 重要な理由 |
|---|---|
.git/config | リモート、認証情報、フックのパス |
.git/logs/HEAD | コミット履歴、reflog 形式の情報漏えい |
.git/refs/heads/* | ブランチの先端、コミット SHA |
.git/packed-refs | パックされたブランチ/タグの参照 |
.git/objects/** | 再構築に使用するオブジェクト blob |
2. SVN の露出
検出
- SVN 1.7 より前:
/.svn/entries— パスとリビジョンを一覧表示する XML またはテキスト形式のメタデータです。 - SVN 1.7 以降:
/.svn/wc.db— SQLite の作業コピー・データベースです(ダウンロード後にPRAGMA table_infoを実行します)。
プローブの例:
GET /.svn/entries HTTP/1.1
GET /.svn/wc.db HTTP/1.1
復旧
anantshri/svn-extractor— 公開された.svnから自動的に抽出します。- 手動:
wc.dbをダウンロードし、sqlite3でファイルパスとチェックサムを照会してから、公開されている場合は/.svn/pristine/の blob をリクエストします。
3. MERCURIAL の露出
検出
/.hg/requires— リポジトリ機能を列挙する小さなテキストファイルで、Mercurial のメタデータを確認できます。
GET /.hg/requires HTTP/1.1
GET /.hg/store/ HTTP/1.1
復旧
sahildhar/mercurial_source_code_dumper— ストアのパスにアクセスできる場合にリポジトリをダンプします。
4. その他の漏えい
Bazaar(Bzr)
- Bazaar のメタデータを確認するために、
/.bzr/READMEと/.bzr/branch-formatを調査します。
macOS の .DS_Store
/.DS_Storeには、ディレクトリやファイル名の一覧が記録されていることがあります。- ツール:
gehaxelt/ds-store、lijiejie/ds_store_exp—.DS_Storeをオフラインで解析します。
バックアップおよび設定ファイル
アプリケーションのルートと命名規則に合わせて調整して調査します。
/.env
/backup.zip
/backup.tar.gz
/wwwroot.rar
/backup.sql
/config.php.bak
/.config.php.swp
Web サーバーの設定ミスを示す兆候(例:NGINX)
location /.git { deny all; }— ルールによっては、/.git/に対して 403 を返しつつ、特定のサブパスへのアクセスは許可または拒否する場合があります。- 保護された場所への 403 は、そのルートが存在することを確認する手掛かりになります。存在しないパスへの 404 と必ず区別してください。
5. 判断フロー
/.git/HEADを調査 →ref: refs/heads/パターンか? → git-dumper / GitTools / GitHacker を実行し、configとlogs/HEADを調べてシークレットを確認します。- それ以外の場合は
/.svn/wc.dbまたはentriesを調査 → 成功したか? → svn-extractor、または手動でwc.dbと pristine を復元します。 - それ以外の場合は
/.hg/requiresを調査 → 成功したか? → mercurial dumper を使用します。 - それ以外の場合は
/.bzr/READMEを調査 → Bazaar のツール、または手動でパスをたどります。 - 並行して:アプリのルートと親パスにある
/.DS_Store、/.env、一般的な バックアップ拡張子 を取得します。 - ステータスコードを解釈:ディレクトリが 403 で、特定のファイルが 200 の場合は、ファイル単位の抽出を 最優先 で行います。
6. 関連するルーティング
- recon-for-sec から — 詳細な VCS テストの前に、スコープを守った探索、クロール、フィンガープリンティングを行います。
- recon-and-methodology から — 構造化された方法論と証拠の取り扱いを確認します。
注:偵察スキルと連携し、まずスコープとリクエスト頻度を設定してから、対象を絞った VCS/バックアップの検証を実施します。
コメント
Markdown 対応