हैकिंग ट्रिक्स साझा करें, हैकट्रिक्स और हैकट्रिक्स क्लाउड गिटहब रेपो में PR जमा करके।
PHP-FPM
PHP-FPM को एक उत्कृष्ट विकल्प के रूप में पेश किया गया है स्टैंडर्ड PHP FastCGI के लिए, जो उन विशेषताओं को प्रदान करता है जो खासकर उच्च ट्रैफिक वाली वेबसाइटों के लिए लाभकारी हैं। यह एक मास्टर प्रक्रिया के माध्यम से काम करता है जो कई कर्मी प्रक्रियाओं का संग्रह देखता है। PHP स्क्रिप्ट अनुरोध के लिए, यह वेब सर्वर है जो एक FastCGI प्रॉक्सी कनेक्शन को PHP-FPM सेवा के लिए प्रारंभ करता है। इस सेवा की क्षमता है कि यह सर्वर पर नेटवर्क पोर्ट्स या यूनिक्स सॉकेट्स के माध्यम से अनुरोध प्राप्त कर सकता है।
प्रॉक्सी कनेक्शन की बीचक भूमिका के बावजूद, PHP-FPM को वेब सर्वर के साथ एक ही मशीन पर सक्रिय होना चाहिए। यह कनेक्शन, प्रॉक्सी-आधारित होने के बावजूद, पारंपरिक प्रॉक्सी कनेक्शनों से भिन्न है। एक अनुरोध प्राप्त करने पर, PHP-FPM से एक उपलब्ध कर्मी इसे प्रसंस्करण करता है - PHP स्क्रिप्ट को क्रियान्वित करता है और फिर परिणामों को वेब सर्वर को फिर से भेजता है। एक कर्मी एक अनुरोध का प्रसंस्करण समाप्त करने के बाद, यह आगामी अनुरोधों के लिए फिर से उपलब्ध हो जाता है।
लेकिन CGI और FastCGI क्या हैं?
CGI
सामान्यत: वेब पेज, फ़ाइलें और सभी दस्तावेज़ जो वेब सर्वर से ब्राउज़र में स्थानांतरित किए जाते हैं, वे विशेष सार्वजनिक निर्देशिका में संग्रहीत होते हैं जैसे home/user/public_html। जब ब्राउज़र किसी विशिष्ट सामग्री का अनुरोध करता है, तो सर्वर इस निर्देशिका की जाँच करता है और ब्राउज़र को आवश्यक फ़ाइल भेजता है।
अगर सर्वर पर CGI स्थापित है, तो विशिष्ट cgi-bin निर्देशिका भी वहाँ जोड़ी जाती है, उदाहरण के लिए home/user/public_html/cgi-bin। CGI स्क्रिप्ट इस निर्देशिका में संग्रहीत होते हैं। निर्देशिका में प्रत्येक फ़ाइल को एक क्रियात्मक कार्य के रूप में व्यवहार किया जाता है। निर्देशिका से स्क्रिप्ट तक पहुँचते समय, सर्वर फ़ाइल की सामग्री को ब्राउज़र को भेजने की बजाय, इस स्क्रिप्ट के लिए जिम्मेदार अनुप्रयोग को अनुरोध भेजता है। इनपुट डेटा प्रसंस्करण पूरा होने के बाद, अनुप्रयोग आउटपुट डेटा को वेब सर्वर को भेजता है जो डेटा को HTTP क्लाइंट को आगे भेजता है।
उदाहरण के लिए, जब CGI स्क्रिप्ट http://mysitename.com/cgi-bin/file.pl तक पहुँचा जाता है, तो सर्वर उचित पर्ल अनुप्रयोग को CGI के माध्यम से चलाएगा। स्क्रिप्ट के निष्पादन से उत्पन्न डेटा को अनुप्रयोग वेब सर्वर को भेजेगा। दूसरी ओर, सर्वर डेटा को ब्राउज़र को भेजेगा। अगर सर्वर के पास CGI नहीं होता, तो ब्राउज़र ने .pl फ़ाइल कोड को ही दिखाया होता। (व्याख्या यहाँ से)
FastCGI
FastCGI एक नए वेब प्रौद्योगिकी है, एक सुधारी हुई CGI संस्करण के रूप में मुख्य कार्यक्षमता वही रहती है।
FastCGI विकसित करने की आवश्यकता थी क्योंकि वेब एप्लिकेशनों के तेजी से विकास और जटिलता से उत्पन्न वेब की मांग को ध्यान में रखते हुए, और CGI प्रौद्योगिकी की स्केलेबिलिटी की कमियों का समाधान करने के लिए। उन आवश्यकताओं को पूरा करने के लिए Open Market ने FastCGI पेश किया - एक उच्च प्रदर्शन वाला CGI प्रौद्योगिकी संस्करण जिसमें वृद्धि की गई क्षमताएँ हैं।
डिसेबल_फंक्शन्स बायपास
disable_functions सीमाओं को टालकर FastCGI का उपयोग करके PHP कोड चलाना संभव है।
Gopherus के माध्यम से
मुझे यकीन नहीं है कि यह आधुनिक संस्करणों में काम कर रहा है क्योंकि मैंने एक बार प्रयास किया और यह कुछ भी नहीं निष्पादित किया। कृपया, अगर इसके बारे में अधिक जानकारी है तो मुझसे संपर्क करें [PEASS & HackTricks टेलीग्राम समूह यहाँ](https://t.me/peass), या ट्विटर [@carlospolopm](https://twitter.com/hacktricks_live)।
Gopherus का उपयोग करके आप FastCGI सुनने वाले को पेश करने के लिए एक पेलोड उत्पन्न कर सकते हैं और विचारशील आदेशों को निष्पादित कर सकते हैं:
फिर, आप urlencoded पेलोड को ग्रब कर सकते हैं और इसे डिकोड करके और बेस64 में बदल सकते हैं, [उदाहरण के लिए इस साइबरचेफ की रेसिपी का उपयोग करें]([http://icyberchef.com/#recipe=URL_Decode%28%29To_Base64%28'A-Za-z0-9%2B/%3D'%29&input=JTAxJTAxJTAwJTAxJTAwJTA4JTAwJTAwJTAwJTAxJTAwJTAwJTAwJTAwJTAwJTAwJTAxJTA0JTAwJTAxJTAxJTA0JTA0JTAwJTBGJTEwU0VSVkVSX1NPRlRXQVJFZ28lMjAvJTIwZmNnaWNsaWVudCUyMCUwQiUwOVJFTU9URV9BRERSMTI3LjAuMC4xJTBGJTA4U0VSVkVSX1BST1RPQ09MSFRUUC8xLjElMEUlMDJDT05URU5UX0xFTkdUSDc2JTBFJTA0UkVRVUVTVF9NRVRIT0RQT1NUJTA5S1BIUF9WQUxVRWFsbG93X3VybF9pbmNsdWRlJTIwJTNEJTIwT24lMEFkaXNhYmxl
मुझे यह नहीं पता कि यह आधुनिक संस्करणों में काम कर रहा है क्योंकि मैंने एक बार प्रयास किया और मैं कुछ भी नहीं कर पाया। वास्तव में मैंने देखा कि FastCGI निष्क्रियकरण से disable_functions खाली है, लेकिन PHP (किसी तरह से) मुझे पहले से निष्क्रिय किसी भी फ़ंक्शन को निष्पादित करने से रोक रहा था। कृपया, यदि इसके बारे में अधिक जानकारी है तो मुझसे संपर्क करें [PEASS & HackTricks telegram group here](https://t.me/peass), या ट्विटर [@carlospolopm](https://twitter.com/hacktricks_live)।
यह एक php स्क्रिप्ट है जो open_basedir और disable_functions को छलकरने के लिए fastcgi प्रोटोकॉल का उपयोग करता है।
यह आपको कठिन disable_functions को RCE तक पहुँचाने में मदद करेगा जब वह दुर्भाग्यपूर्ण एक्सटेंशन लोड करता है।
आप इसे यहाँ देख सकते हैं: https://github.com/w181496/FuckFastcgi या यहाँ एक स्लाइटली संशोधित और बेहतर वर्शन यहाँ: https://github.com/BorelEnzo/FuckFastcgi
आप देखेंगे कि एक्सप्लॉइट पिछले कोड के बहुत ही समान है, लेकिन disable_functions को छलकरने की कोशिश करने की बजाय, यह एक बाहरी PHP मॉड्यूल लोड करने की कोशिश करता है कोड को निष्पादित करने के लिए पैरामीटर extension_dir और extension का उपयोग करके चर PHP_ADMIN_VALUE के भीतर।
नोट1: शायद आपको वही PHP संस्करण जिसे सर्वर उपयोग कर रहा है के साथ एक्सटेंशन को पुनः कंपाइल करने की आवश्यकता होगी (आप phpinfo के आउटपुट के भीतर इसे जांच सकते हैं):
नोट2: मैंने इसे काम करने में सफलता प्राप्त की जब मैंने extension_dir और extension मानों को एक PHP .ini कॉन्फ़िग फ़ाइल में डाल दिया (कुछ ऐसा जिसे आप एक सर्वर पर हमला करके नहीं कर सकते)। लेकिन किसी कारण से, जब इस एक्सप्लॉइट का उपयोग कर रहा था और एक्सटेंशन को PHP_ADMIN_VALUE चर से लोड कर रहा था, तो प्रक्रिया बस मर गई, इसलिए मुझे यह पता नहीं है कि क्या यह तकनीक अब भी वैध है।