Skip to content
KitploitKITPLOIT
उपकरणएक्सप्लॉइटब्लॉग
Log in
जमा करें
उपकरणएक्सप्लॉइटब्लॉग
जमा करें

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

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

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

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

श्रेणियाँ

सभी श्रेणियाँ देखें
Loading categories
CVE-2025-49132-PoC — CVE-2025-49132 के लिए प्रूफ-ऑफ-कॉन्सेप्ट शोषण, जो Pterodactyl Panel <= 1.11.10 में locale पैरामीटर इंजेक्शन के माध्यम से अप्रमाणित दूरस्थ कोड निष्पादन को सक्षम करता है। इसमें जाँच और शोषण मोड शामिल हैं। | Kitploit
उपकरण/GitHubGitHub/kerburenthusiasm/cve-2025-49132-poc
पेलोड जनरेशनभेद्यता विश्लेषणकोड विश्लेषणशोषणवेब एप्लिकेशन शोषणपेनिट्रेशन टेस्टिंग
GitHubkerburenthusiasm/cve-2025-49132-poc

CVE-2025-49132-PoC

CVE-2025-49132 के लिए प्रूफ-ऑफ-कॉन्सेप्ट शोषण, जो Pterodactyl Panel <= 1.11.10 में locale पैरामीटर इंजेक्शन के माध्यम से अप्रमाणित दूरस्थ कोड निष्पादन को सक्षम करता है। इसमें जाँच और शोषण मोड शामिल हैं।

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

सभी देखें →

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

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

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

सभी उपकरण देखें →
रिपॉजिटरी देखें
77 महीने पहलेअभी तक समीक्षित नहीं
साझा करें

CVE-2025-49132-PoC

CVE-2025-49132 के लिए प्रूफ-ऑफ-कॉन्सेप्ट, Pterodactyl Panel <= 1.11.10 में रिमोट कोड एक्सेक्यूशन हेतु

यह PoC निम्नलिखित स्रोतों से संदर्भ लेता है:

  • https://www.exploit-db.com/exploits/52341
  • https://github.com/63square/CVE-2025-49132

उपयोग

# जांचें कि क्या वेब एप्लिकेशन असुरक्षित है
python3 poc.py -u <url> -m check

# कुछ मजेदार करें
python3 poc.py -u <url> -m exploit -p <path_to_pear_dir> -t <path_to_write_to>

तकनीकी विवरण

LocaleController.php के git diff का विश्लेषण करने पर (v1.11.10 और v1.11.11 के बीच, लिंक), हम देख सकते हैं कि कंट्रोलर locale और namespace पैरामीटर्स को बिना किसी सत्यापन या स्वच्छता (validation/sanitization) के स्वीकार करता है।

यह समझने के लिए कि यह खतरनाक क्यों है, हम panel/routes/base.php में कॉन्फ़िगर किए गए रूटिंग को देखेंगे। रूट स्पष्ट रूप से प्रमाणीकरण-संबंधित मिडलवेयर को हटा देता है, जिससे अप्रमाणित उपयोगकर्ता /locales/locale.json को कॉल कर सकते हैं और आवश्यक क्वेरी पैरामीटर्स जैसे locale और namespace प्रदान कर सकते हैं। इसका मतलब है कि ये पैरामीटर अब उपयोगकर्ता द्वारा नियंत्रित हैं।

Route::get('/locales/locale.json', Base\LocaleController::class)
    // इस एंडपॉइंट के लिए प्रमाणीकरण मिडलवेयर हटाएं
    ->withoutMiddleware(['auth', RequireTwoFactorAuthentication::class]);

अब LocalController.php पर वापस आते हैं, निम्नलिखित कोड की पंक्ति RCE का जादू प्रदान करती है।

$this->loader->load($locale, str_replace('.', '/', $namespace))

load फ़ंक्शन Laravel के अनुवाद ढाँचे से आता है (यहाँ):

public function load($locale, $group, $namespace = null) # 1
{
    if ($group === '*' && $namespace === '*') { # 2
        return $this->loadJsonPaths($locale);
    }

    if (is_null($namespace) || $namespace === '*') { # 3
        return $this->loadPaths($this->paths, $locale, $group); # 4
    } 

    return $this->loadNamespaced($locale, $group, $namespace);
}
  • #1 पर, हम देखते हैं कि load फ़ंक्शन 3 तर्क लेता है। पहली बार में भ्रमित करने वाला, वास्तव में str_replace('.', '/', $namespace) का मान दूसरे तर्क $group को दिया जाता है।
  • #2 पर, $namespace कभी * नहीं होगा क्योंकि यह हमेशा NULL रहेगा। इसी तरह $group कभी * नहीं होगा क्योंकि हम यहाँ जो पास किया जाता है उसे नियंत्रित कर सकते हैं।
  • #3 पर, चूंकि $namespace null है, शाखा ली जाएगी जिसके परिणामस्वरूप #4 में loadPaths का निष्पादन होगा।

उपरोक्त को समझने के बाद, हम loadPaths के विश्लेषण पर आगे बढ़ते हैं, जहाँ वास्तविक जादू होता है:

protected function loadPaths(array $paths, $locale, $group)
{
    return (new Collection($paths))
    ->reduce(function ($output, $path) use ($locale, $group) {
        if ($this->files->exists($full = "{$path}/{$locale}/{$group}.php")) { # 1
            $output = array_replace_recursive($output, $this->files->getRequire($full)); # 2
        }

        return $output;
    }, []);
}
  • #1 पर, लोडर अपेक्षित अनुवाद फ़ाइल नाम .php जोड़कर बनाता है।
  • #2 पर, यदि वह फ़ाइल मौजूद है, तो इसे getRequire() के माध्यम से लोड किया जाता है, जो PHP फ़ाइल को निष्पादित करता है और उसकी सरणी लौटाता है।

चूँकि हम namespace URL पैरामीटर को नियंत्रित करते हैं, हम प्रभावित कर सकते हैं कि एप्लिकेशन किस फ़ाइल को लोड करने का प्रयास करता है। एक मान प्रदान करके जो .php स्क्रिप्ट से मैप होता है, हम सर्वर को उस स्क्रिप्ट को निष्पादित करवा सकते हैं। उदाहरण के लिए, phpinfo.php लोड करने के लिए, हम पैरामीटर को इस प्रकार सेट कर सकते हैं: namespace=phpinfo

PoC स्पष्टीकरण

PoC pearcmd.php के माध्यम से मनमाना फ़ाइल लिखने का प्रयास करता है। इस विधि का उपयोग कई समान PoCs और सुरक्षा अनुसंधानों में किया गया है:

  • https://labs.watchtowr.com/form-tools-we-need-to-talk-about-php/
  • https://medium.com/@lashin0x/local-file-inclusion-to-remote-code-execution-rce-bea0ec06342a

ध्यान दें कि pearcmd.php विभिन्न निर्देशिकाओं में स्थित हो सकता है, जैसे:

  • /usr/share/php/pearcmd.php
  • /usr/share/php/PEAR/pearcmd.php
  • /usr/lib/php/pearcmd.php

और कई अन्य।

लिखी जाने वाली फ़ाइल में सामान्य दुर्भावनापूर्ण PHP कोड होगा।

अस्वीकरण / जिम्मेदार उपयोग

केवल अधिकृत परीक्षण के लिए। उन सिस्टम पर उपयोग न करें जिनके आप मालिक नहीं हैं या जिनके परीक्षण की आपको स्पष्ट अनुमति नहीं है।
सभी लागू कानूनों का पालन करने के लिए आप जिम्मेदार हैं; लेखक दुरुपयोग के लिए कोई देयता नहीं मानते।

समस्या

Python की requests लाइब्रेरी थोड़ी बहुत मददगार है क्योंकि यह प्रदान किए गए URL में वर्णों को एन्कोड करती है। इस समस्या को हल करने में काफी समय बिताया और अंततः सीधे curl का उपयोग करना पड़ा। सराहना होगी यदि कोई इस समस्या में सहायता प्रदान कर सके।

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