केवल अधिकृत परीक्षण और रक्षात्मक सीखने के लिए।
यह रिपॉजिटरी नियंत्रित प्रयोगशाला वातावरण (जैसे, CTF/HTB-शैली सेटअप) के लिए है, जहां आप लक्ष्य के मालिक हैं या उसका परीक्षण करने की स्पष्ट लिखित अनुमति है।
संदर्भ
इस रिपॉजिटरी में एक वास्तविक दुनिया की कमजोरी के लिए एक शैक्षिक पायथन प्रूफ-ऑफ-कॉन्सेप्ट (pterodactyl_rce.py) शामिल है, जो Pterodactyl Panel v1.11.11 से पहले के संस्करणों को प्रभावित करती है। कमजोर कॉन्फ़िगरेशन के तहत, एक अप्रमाणित हमलावर /locales/locale.json एंडपॉइंट के माध्यम से locale और namespace पैरामीटर के अनुचित हैंडलिंग के कारण प्राप्त कर सकता है।
रिमोट कोड एक्सीक्यूशन
यह PoC वेरिएंट उन वातावरणों को लक्षित करता है जहां PHP-PEAR स्थापित है, और इसे सेवानिवृत्त Hack The Box मशीन Pterodactyl के विरुद्ध बनाया और मान्य किया गया था: https://app.hackthebox.com/machines/Pterodactyl। यह अन्य प्रयोगशाला सेटअपों में भी काम कर सकता है जहां समान शर्तें पूरी होती हैं।
कमजोरी संदर्भ
GitHub सलाह: GHSA-24wv-6c99-f843 (CVE-2025-49132)
प्रभावित: Pterodactyl Panel < 1.11.11
ठीक किया गया: v1.11.11 (पैच कमिट 24c82b0…)
उच्च-स्तरीय विचार (PoC कैसे काम करता है)
उच्च स्तर पर, PoC इन चरणों को जोड़ता है:
msfvenom के साथ एक Linux x64 रिवर्स TCP ELF पेलोड उत्पन्न करता है।
उस ELF को HTTP सर्वर का उपयोग करके सर्व करता है (एक अनुरोध, फिर बाहर निकलता है)।
/tmp में एक PHP "स्टेजर" लिखने के लिए कमजोर /locales/locale.json हैंडलिंग का दुरुपयोग करता है (PEAR pearcmd कॉन्फ़िग-क्रिएट ट्रिक के माध्यम से)।
लोकेल्स एंडपॉइंट के माध्यम से स्टेजर को ट्रिगर करता है ताकि वह:
ELF को /tmp में डाउनलोड करे,
इसे निष्पादन योग्य बनाए,
इसे आपके लिसनर से वापस कनेक्ट करने के लिए निष्पादित करे।
स्क्रिप्ट "अपलोड" चरण के लिए curl के बजाय एक रॉ HTTP क्लाइंट का उपयोग करती है, क्योंकि कुछ उपकरण वर्णों को सामान्य या एनकोड कर सकते हैं, जो तैयार अनुरोध को तोड़ देता है।
नोट: यह README जानबूझकर रक्षात्मक/शैक्षिक स्तर पर रहता है। कोड का उपयोग केवल उन वातावरणों में करें जिनका परीक्षण करने की आपको अनुमति है।
आवश्यकताएँ (स्थानीय)
Python 3.10+ (केवल मानक लाइब्रेरी के साथ परीक्षण किया गया)
msfvenom$PATH में उपलब्ध (Metasploit Framework)
nc (नेटकैट) यदि आप चाहते हैं कि PoC एक ऑटो-लिसनर शुरू करे
आपकी प्रयोगशाला मशीन और आपके प्रयोगशाला Pterodactyl इंस्टेंस के बीच नेटवर्क पहुंच
कॉन्फ़िगरेशन
स्क्रिप्ट वर्तमान में स्रोत में एक पैनल HTB होस्टनाम की अपेक्षा करती है:
root@kitploit:~
host = "panel.pterodactyl.htb"
इसके अतिरिक्त PHP-PEAR का हार्डकोडेड पथ पर सेट है: ../../../../../usr/share/php/PEAR।
यदि आप Pterodactyl बॉक्स के बाहर इसका परीक्षण कर रहे हैं, तो आपको इस पथ को अपने स्थानीय कॉन्फ़िगरेशन के अनुसार समायोजित करना होगा।
उपयोग (केवल नियंत्रित प्रयोगशाला)
1) मूल रन (ऑटो-लिसनर सक्षम)
root@kitploit:~
python3 pterodactyl_rce.py <LHOST> <LPORT>
<LHOST>: आपका कॉलबैक IP जो प्रयोगशाला सर्वर तक पहुंच योग्य हो
एक ELF पेलोड उत्पन्न करता है (रैंडमाइज़्ड फ़ाइलनाम जैसे shell_ab12cd34)
:8080 पर एक वन-शॉट HTTP सर्वर शुरू करता है
/tmp/<random>.php के अंतर्गत एक PHP स्टेजर बनाता है
स्टेजर को ट्रिगर करता है
ट्रिगर के बाद स्थानीय ELF फ़ाइल को हटा देता है
आपके शेल को अपग्रेड करने के लिए एक टिप प्रिंट करता है (PTY)
सफल शोषण का स्क्रीनशॉट:
ज्ञात समस्याएं / प्रयोगशाला नोट्स
प्रयोगशाला अस्थिरता: लक्ष्य बॉक्स/सेवा अस्थिर हो सकती है (टाइमआउट, आंतरायिक 5xx, विलंबित निष्पादन)। यदि कोई रन विफल होता है, तो थोड़ी देर प्रतीक्षा करके पुनः प्रयास करें।
पुराने पेलोड का पुन: उपयोग: पर्यावरण कभी-कभी पहले से अपलोड/स्टेज की गई फ़ाइल को ट्रिगर कर सकता है। स्क्रिप्ट केवल हमलावर बॉक्स पर एक स्थानीय फ़ाइल को साफ करती है, लेकिन मशीन पर /tmp/ फ़ोल्डर में फ़ाइल को नहीं छूती है।
समाधान:
एक नए रैंडम पेलोड नाम के साथ पुनः रन करें (इस स्क्रिप्ट में डिफ़ॉल्ट व्यवहार)।
http.server प्रारंभिक पोर्ट को 8080 से दूसरे पोर्ट में बदलें।
अपना लिसनर पोर्ट बदलें (उदा., 4444 → 5555) और पेलोड को पुनः उत्पन्न करें।
सुनिश्चित करें कि आपका HTTP सर्वर वर्तमान फ़ाइल परोस रहा है (किसी भी पिछले सर्वर/लिसनर को रोकें)।
यदि आपके पास पहुंच है, तो लक्ष्य पर पुराने /tmp/<name>.php आर्टिफैक्ट्स को मैन्युअल रूप से हटाएं; अन्यथा, कुछ देर प्रतीक्षा करें और पुनः प्रयास करें।
रक्षात्मक मार्गदर्शन (क्या ठीक करें / कैसे पता लगाएं)
पैच / शमन
Pterodactyl Panel v1.11.11 या बाद के संस्करण में अपग्रेड करें।
पैचिंग के अलावा कोई इन-ऐप वर्कअराउंड नहीं है; आप वेब सर्वर स्तर पर /locales/locale.json एंडपॉइंट को ब्लॉक कर सकते हैं, लेकिन यह स्थानीयकरण सुविधाओं को तोड़ सकता है।
पता लगाने के विचार
संदिग्ध अनुरोधों की तलाश करें जैसे:
/locales/locale.json पर असामान्य locale= ट्रैवर्सल अनुक्रम वाले अनुरोध
अजीब namespace= मान (अप्रत्याशित नाम, लंबे स्ट्रिंग, विषम वर्ण)
पैनल होस्ट पर /tmp/ में अचानक अप्रत्याशित फ़ाइलों का निर्माण
वेब लॉग को सहसंबंधित करें:
www / PHP-FPM उपयोगकर्ता द्वारा उत्पन्न नई प्रक्रियाएं
गैर-मानक गंतव्यों/पोर्ट के लिए आउटबाउंड कनेक्शन
पैनल होस्ट से curl/wget का अप्रत्याशित उपयोग
जिम्मेदार उपयोग पर नोट्स
सार्वजनिक इंस्टेंस को स्कैन या परीक्षण न करें।
यदि आप एक कमजोर इंस्टेंस के ऑपरेटर हैं, तो इसे महत्वपूर्ण मानें और तुरंत पैच करें।
रिपोर्टर / खोज श्रेय: GitHub सलाह @azimoff337 को GHSA-24wv-6c99-f843 / CVE-2025-49132 की रिपोर्ट करने का श्रेय देती है।
GitHub सलाह डेटाबेस / CVE प्रक्रिया: कमजोरी के विवरण को ट्रैक और प्रकाशित करने के लिए।
Hack The Box (HTB): यह PoC सीखने और रक्षात्मक अनुसंधान के लिए एक नियंत्रित HTB-शैली प्रयोगशाला वातावरण में बनाया/मान्य किया गया था। सक्रिय HTB सामग्री के लिए कोई स्पॉइलर नहीं।