Git

Tip

AWSハッキングを学び、実践する:HackTricks Training AWS Red Team Expert (ARTE)
GCPハッキングを学び、実践する:HackTricks Training GCP Red Team Expert (GRTE) Azureハッキングを学び、実践する:HackTricks Training Azure Red Team Expert (AzRTE)

HackTricksをサポートする

URLから .git フォルダをダンプするには https://github.com/arthaud/git-dumper

内容を確認するには https://www.gitkraken.com/

ウェブアプリケーションで .git ディレクトリが見つかった場合、wget -r http://web.com/.git. を使ってすべてのコンテンツをダウンロードできます。その後、git diff で加えられた変更を確認できます。

次のツール: Git-Money, DVCS-Pillage and GitTools は git ディレクトリのコンテンツを取得するために使用できます。

ツール https://github.com/cve-search/git-vuln-finder は、コミットメッセージ内の CVE やセキュリティ脆弱性に関する記述を検索するのに使えます。

ツール https://github.com/michenriksen/gitrob は、組織およびその従業員のリポジトリ内の機密データを検索します。

Repo security scanner はコマンドラインベースのツールで、開発者が誤って機密データを push してしまった GitHub シークレットを発見することを目的に作られています。他のツール同様、パスワード、秘密鍵、ユーザー名、トークンなどの発見に役立ちます。

ここで github dorks に関する調査を参照できます: https://securitytrails.com/blog/github-dorks

より高速な /.git ダンプおよび dirlisting バイパス (2024–2026)

  • holly-hacker/git-dumper は並列フェッチに対応した古典的な GitTools dumper の2024年のリライトで(>10x の高速化)。例: python3 git-dumper.py https://victim/.git/ out && cd out && git checkout -- .
  • Ebryx/GitDump.git/index, packed-refs などからオブジェクト名をブルートフォースして、ディレクトリトラバーサルが無効でもリポジトリを復元します: python3 git-dump.py https://victim/.git/ dump && cd dump && git checkout -- .

ダンプ後の迅速なトリアージ

cd dumpdir
# reconstruct working tree
git checkout -- .
# show branch/commit map
git log --graph --oneline --decorate --all
# list suspicious config/remotes/hooks
git config -l
ls .git/hooks

シークレット/資格情報ハンティング(現行ツール)

  • TruffleHog v3+: エントロピー+正規表現で自動的にGit履歴を辿ります。 trufflehog git file://$PWD --only-verified --json > secrets.json
  • Gitleaks (v8+): 高速な正規表現ルールセットで、展開済みツリーまたは履歴全体をスキャンできます。 gitleaks detect -v --source . --report-format json --report-path gitleaks.json

Server-side Git integration RCE via hooksPath override

Gitリポジトリを統合するモダンなWebアプリでは、ユーザー制御の識別子を使って .git/config を書き換えることがあります。これらの識別子が hooksPath に連結されると、Gitフックを攻撃者制御のディレクトリに向けてリダイレクトし、サーバーがネイティブGit(例:git commit)を実行した際に任意のコードを実行できます。主な手順:

  • Path traversal in hooksPath: リポ名や依存名が hooksPath にコピーされる場合、意図した hooks ディレクトリから抜け出して書き込み可能な場所を指すために ../../.. を注入します。これは Git 設定内での path traversal に相当します。
  • Force the target directory to exist: アプリケーションがサーバー側でクローンを行う際、クローン先制御(例:ref/branch/path パラメータ)を悪用して ../../git_hooks のようなトラバーサル先にクローンさせ、中間フォルダを作成させます。
  • Ship executable hooks: Gitメタデータ内で実行ビットを設定し、全てのクローンでフックがモード 100755 で書き込まれるようにします:
git update-index --chmod=+x pre-commit

そのリポジトリの pre-commit/post-commit にペイロード(reverse shell、file dropper など)を追加します。

  • Find a native Git code path: ライブラリの JGit はフックを無視します。フックが実際に実行されるように、system Git にフォールバックするデプロイフローやフラグ(例:deploy-with-attached-repo パラメータを強制する等)を探します。
  • Race the config rewrite: アプリが Git を実行する直前に .git/config をサニタイズする場合、悪意ある hooksPath を書き込むエンドポイントに対してスパムリクエストを送りつつ Git 操作をトリガーして、race condition を勝ち抜きフックを実行させます。

References

Tip

AWSハッキングを学び、実践する:HackTricks Training AWS Red Team Expert (ARTE)
GCPハッキングを学び、実践する:HackTricks Training GCP Red Team Expert (GRTE) Azureハッキングを学び、実践する:HackTricks Training Azure Red Team Expert (AzRTE)

HackTricksをサポートする