
CVE-2024-4577 RCE PoC
PHP को लागू करते समय, टीम ने विंडोज ऑपरेटिंग सिस्टम के भीतर एन्कोडिंग रूपांतरण की बेस्ट-फिट सुविधा पर ध्यान नहीं दिया। इस निगरानी से अनप्रमाणित हमलावर विशिष्ट वर्ण अनुक्रमों द्वारा CVE-2012-1823 के पिछले सुरक्षा उपाय को बायपास कर सकते हैं। तर्क इंजेक्शन हमले के माध्यम से दूरस्थ PHP सर्वरों पर मनमाना कोड निष्पादित किया जा सकता है।
यह PoC केवल सीखने और अनुसंधान उद्देश्यों के लिए है। इसका उपयोग अवैध गतिविधियों के लिए न करें; किसी भी कानूनी परिणाम के लिए आप पूरी तरह से जिम्मेदार हैं।
यह भेद्यता DEVCORE (@d3vc0r3) के Orange Tsai (@orange_8361) द्वारा पाई गई थी। उनके उत्कृष्ट शोध का अनुसरण करना सुनिश्चित करें, हमारी भूमिका केवल इस मुद्दे के लिए शोषण को पुनर्निर्मित और विकसित करने की थी।
जब पहले से ही ऑनलाइन कई सार्वजनिक रूप से उपलब्ध PoCs मौजूद हैं, तो शोषण स्क्रिप्ट को फिर से लिखना क्यों आवश्यक है?
चूंकि कई सार्वजनिक रूप से उपलब्ध PoCs एक ही मूल शोषण पर आधारित हैं, इसलिए कई विक्रेताओं ने इन PoCs को संदर्भ के रूप में उपयोग किया है और उनके शोषण को रोकने के लिए कुछ कीवर्ड को अवरुद्ध किया है। हालांकि, वे अक्सर सभी संभावित शोषण वैक्टर को अवरुद्ध करने की अनदेखी करते हैं। इस समस्या के समाधान के लिए, स्क्रिप्ट में यादृच्छिक पैरामीटर उत्पन्न करने के लिए एक सरल तंत्र, साथ ही PHP CGI इंजेक्शन से RCE तक की सफलता दर बढ़ाने के लिए विभिन्न LFI-to-RCE शोषण विधियां शामिल हैं।
एक परीक्षण के दौरान जहां मैं पर्यावरणीय भेद्यता को पुन: उत्पन्न करने का प्रयास कर रहा था, मैंने पाया कि मेरा PoC समायोजन के बावजूद लगातार HTTP 500 त्रुटि उत्पन्न कर रहा था। चूंकि मैं एक कमजोर वातावरण में काम कर रहा था, मैंने त्रुटि के कारण की जांच शुरू की। तब मुझे Devcore का एक लेख याद आया जिसमें उल्लेख किया गया था कि, कुछ शोषण परिदृश्यों में, सर्वर HTTP 500 त्रुटि लौटाएगा, भले ही RCE शोषण वास्तव में सफल रहा हो। इस बात को ध्यान में रखते हुए, मैंने यह परीक्षण करने का निर्णय लिया कि क्या मैं स्थानीय रूप से calc.exe चला सकता हूं, और मेरे आश्चर्य के लिए, यह काम कर गया—यह एक अंधा RCE था!
हालांकि, जब मैंने Apache त्रुटि लॉग की जांच की, तो मुझे allow_url_include को संदर्भित करने वाली एक त्रुटि मिली, इस तथ्य के बावजूद कि हमला सफलतापूर्वक निष्पादित हुआ था (और मैं अभी भी मूल कारण को पूरी तरह से नहीं समझ पाया हूं; यदि आपके पास अंतर्दृष्टि है, तो कृपया मुझसे संपर्क करें)। इसने मुझे एक ऐसा शोषण बनाने के लिए प्रेरित किया जिसमें अंधा RCE का परीक्षण करने का विकल्प भी शामिल है😊।
यदि आपका लक्ष्य विंडोज 7 से पहले का ऑपरेटिंग सिस्टम संस्करण है, तो आप अभी भी अन्य तरीकों से दृश्य RCE या रिवर्स शेल तक बढ़ा सकते हैं। हालांकि, ये तकनीकें इस लेख के दायरे से बाहर हैं, इसलिए हम विस्तार में नहीं जाएंगे। एक पैठ परीक्षक या रेड टीम विशेषज्ञ के रूप में, आप काफी जल्दी वैकल्पिक समाधान खोजने में सक्षम होंगे, जो एक दिलचस्प प्रक्रिया हो सकती है😉।
15 नवंबर, 2024 को अपडेट किया गया
कार्य आवश्यकताओं के कारण, मैंने स्क्रिप्ट में सुधार जारी रखा है ताकि इसे सभी वातावरणों के साथ यथासंभव संगत बनाया जा सके और RCE प्राप्त करने की संभावनाओं को अधिकतम किया जा सके। यह प्रयास इस तथ्य से प्रेरित था कि कुछ लक्ष्य कई सार्वजनिक PoCs का उपयोग करके PHP को सफलतापूर्वक निष्पादित नहीं कर सके। अंततः, मैंने अप्रत्याशित रूप से इस समस्या को हल कर दिया, लगभग सभी मामलों में त्रुटि 500 को दूर करने और PHP के निष्पादन परिणामों को सफलतापूर्वक प्रदर्शित करने में कामयाब रहा। परिणामस्वरूप, अंधा RCE अब उतना महत्वपूर्ण नहीं रहा। 😧
शोषण की शर्तें
आपको निर्भरताएं स्थापित करने की आवश्यकता है:
$ python3 -m pip install requests उपयोग निर्देश प्राप्त करने के लिए सीधे स्क्रिप्ट चलाएँ। यह जांचने के लिए कि लक्ष्य कमजोर है या नहीं, आप नीचे दी गई कमांड चला सकते हैं।
$ python3 CVE-2024-4577.py <target> <php shell>

यदि लक्ष्य पर शोषण मौजूद है, तो आप PHP निष्पादन परिणामों को स्थानीय रूप से सहेज सकते हैं, जो उन लोगों के लिए सहायक है जिन्हें phpinfo देखने की आवश्यकता है।
$ python3 CVE-2024-4577.py <target> "phpinfo()" --save info.html

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