<summary><strong>जानें AWS हैकिंग को शून्य से हीरो तक</strong><ahref="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
* यदि आप अपनी **कंपनी का विज्ञापन HackTricks में देखना चाहते हैं** या **HackTricks को PDF में डाउनलोड करना चाहते हैं** तो [**सब्सक्रिप्शन प्लान्स देखें**](https://github.com/sponsors/carlospolop)!
* [**आधिकारिक PEASS & HackTricks स्वैग**](https://peass.creator-spring.com) प्राप्त करें
* हमारे विशेष [**NFTs**](https://opensea.io/collection/the-peass-family) कलेक्शन, [**The PEASS Family**](https://opensea.io/collection/the-peass-family) खोजें
* **शामिल हों** 💬 [**डिस्कॉर्ड समूह**](https://discord.gg/hRep4RUj7f) या [**टेलीग्राम समूह**](https://t.me/peass) या हमें **ट्विटर** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)** पर फॉलो** करें।
* **हैकिंग ट्रिक्स साझा करें** द्वारा PRs सबमिट करके [**HackTricks**](https://github.com/carlospolop/hacktricks) और [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos में।
डिफ़ॉल्ट रूप से जब एक फ़ाइल PHP में अपलोड की जाती है (यह उम्मीद नहीं थी भी), तो यह `/tmp` में एक अस्थायी फ़ाइल उत्पन्न करेगा जिसका नाम **`php[a-zA-Z0-9]{6}`** जैसा होगा, हालांकि मैंने कुछ डॉकर छवियाँ देखी हैं जहां उत्पन्न फ़ाइलें अंक नहीं समायुक्त होती हैं।
ध्यान दें कि डिफ़ॉल्ट रूप से **PHP केवल एक ही अनुरोध में 20 फ़ाइलें अपलोड करने की अनुमति देता है** ( `/etc/php/<version>/apache2/php.ini` में सेट किया गया है):
अन्य तकनीकें PHP प्रोटोकॉल पर हमला करने पर निर्भर हैं (यदि आपके पास केवल पथ के अंतिम हिस्से का नियंत्रण है तो आप यह नहीं कर पाएंगे), फ़ाइल के पथ को उजागर करना, अपेक्षित फ़ाइलों का दुरुपयोग करना, या **PHP को विभाजन त्रुटि का सामना कराना ताकि अपलोड की गई अस्थायी फ़ाइलें हटाई न जाएं**।
यह तकनीक **पिछले तकनीक के बहुत ही समान है लेकिन किसी ज़ीरो दिन को खोजने की आवश्यकता नहीं है**।
इस तकनीक में **हमें केवल एक संबंधित पथ को नियंत्रित करने की आवश्यकता है**। यदि हम फ़ाइलें अपलोड करने और **LFI को कभी समाप्त नहीं होने देने** में कामयाब होते हैं, तो हमें "पर्याप्त समय" होगा **अपलोड की गई फ़ाइलों को ब्रूट-फ़ोर्स करने** और **अपलोड की गई किसी भी फ़ाइल को खोजने** के लिए।
* निश्चित फ़ाइल(ओं) की उपस्थिति की आवश्यकता है (अधिक हो सकती हैं)
* **संभावित फ़ाइल नामों की अत्यधिक संख्या: 56800235584**
* यदि सर्वर **अंक उपयोग नहीं कर रहा है** तो कुल संभावित मात्रा है: **19770609664**
* डिफ़ॉल्ट रूप से **केवल 20 फ़ाइलें** एक **एकल अनुरोध** में अपलोड की जा सकती हैं।
* उपयोग किए गए सर्वर की **पारलेल कर्मचारियों की अधिकतम संख्या**।
* यह सीमा पिछले वालों के साथ इस हमले को बहुत अधिक चलने के लिए बना सकती है
* **PHP अनुरोध के लिए समय सीमा**। आदर्श रूप से यह शाश्वत होना चाहिए या यदि नहीं, तो PHP प्रक्रिया को हटाए बिना अस्थायी अपलोड की गई फ़ाइलें हटा देना भी एक पीड़ा होगी।
तो, आप **PHP इनक्लूड को कभी समाप्त कैसे कर सकते हैं**? बस फ़ाइल **`/sys/kernel/security/apparmor/revision`** को शामिल करके। (**डॉकर कंटेनर में उपलब्ध नहीं है, दुःख की बात...**).
डिफ़ॉल्ट रूप से, Apache **150 समभावित कनेक्शन** समर्थन करता है, [https://ubiq.co/tech-blog/increase-max-connections-apache/](https://ubiq.co/tech-blog/increase-max-connections-apache/) के अनुसार इस संख्या को 8000 तक बढ़ाना संभव है। इस मॉड्यूल के साथ PHP का उपयोग करने के लिए इसे फॉलो करें: [https://www.digitalocean.com/community/tutorials/how-to-configure-apache-http-with-mpm-event-and-php-fpm-on-ubuntu-18-04](https://www.digitalocean.com/community/tutorials/how-to-configure-apache-http-with-mpm-event-and-php-fpm-on-ubuntu-18-04)।
यदि Apache सर्वर में सुधार किया गया है और हम **4000 कनेक्शन** (अधिकतम संख्या की ओर आधा) का उपयोग कर सकते हैं। हम `3999*20 = 79980`**फ़ाइलें** बना सकते हैं और **संख्या** को लगभग **19.7 घंटे** या **6.9 घंटे** (10 घंटे, 3.5 घंटे 50% की संभावना) तक कम किया जा सकता है।
यदि Apache के लिए नियमित php मॉड का उपयोग करने की बजाय **वेब पृष्ठ PHP-FMP का उपयोग कर रहा है** (यह वेब पृष्ठ की कुशलता में सुधार करता है, इसलिए इसे पाना सामान्य है), तो तकनीक को सुधारने के लिए कुछ और किया जा सकता है।
PHP-FMP को **`/etc/php/<php-version>/fpm/pool.d/www.conf`** में **`request_terminate_timeout`** पैरामीटर को **कॉन्फ़िगर** करने की अनुमति है।\
यह पैरामीटर सेकंड की अधिकतम मात्रा को दर्शाता है **जब****PHP को अनुरोध समाप्त होना चाहिए** (डिफ़ॉल्ट रूप से अनंत, लेकिन **30 सेकंड अगर पैरामीटर को अनकमेंट किया गया है**। जब एक अनुरोध PHP द्वारा प्रसंस्कृत किया जा रहा होता है तो निर्दिष्ट सेकंड की संख्या, तो वह **मार दिया जाता है**। इसका मतलब है, कि यदि अनुरोध अस्थायी फ़ाइलें अपलोड कर रहा था, क्योंकि **php प्रसंस्करण रोक दिया गया था**, तो वह **फ़ाइलें हटाई नहीं जाएंगी**। इसलिए, यदि आप एक अनुरोध को उस समय तक चला सकते हैं, तो आप **हजारों अस्थायी फ़ाइलें उत्पन्न कर सकते हैं** जो हटाई नहीं जाएंगी, जो उन्हें खोजने की प्रक्रिया को **तेज करेगी** और सभी कनेक्शन का उपयोग करके प्लेटफ़ॉर्म को DoS करने की संभावना को कम करेगी।
इसलिए, **DoS से बचने** के लिए मान लें कि एक **हमलावर केवल 100 कनेक्शन** का उपयोग कर रहा होगा और php द्वारा अधिकतम प्रसंस्करण समय (`request_terminate_timeout`**)** **30 सेकंड** है। इसलिए, **प्रति सेकंड उत्पन्न की जा सकने वाली अस्थायी फ़ाइलों** की संख्या है `100*20/30 = 66.67`।
फिर, **10000 फ़ाइलें** उत्पन्न करने के लिए एक हमलावर को चाहिए होगा: **`10000/66.67 = 150 सेकंड`** (यदि **100000 फ़ाइलें** उत्पन्न करने के लिए समय होगा **25 मिनट**)।
फिर, हमलावर उन **100 कनेक्शनों** का उपयोग करके एक **खोज ब्रूट-फ़ोर्स** कर सकता है। \*\*\*\* 300 अनुरोध/सेकंड की गति के साथ इसे उत्पन्न करने के लिए आवश्यक समय निम्नलिखित है: