hacktricks/pentesting-web/file-inclusion/lfi2rce-via-temp-file-uploads.md

6.8 KiB

{% hint style="success" %} AWS हैकिंग सीखें और अभ्यास करें:HackTricks Training AWS Red Team Expert (ARTE)
GCP हैकिंग सीखें और अभ्यास करें: HackTricks Training GCP Red Team Expert (GRTE)

HackTricks का समर्थन करें
{% endhint %}

इस तकनीक के पूर्ण विवरण की जांच करें https://gynvael.coldwind.pl/download.php?f=PHP_LFI_rfc1867_temporary_files.pdf

PHP फ़ाइल अपलोड

जब एक PHP इंजन एक POST अनुरोध प्राप्त करता है जिसमें RFC 1867 के अनुसार फ़ाइलें प्रारूपित होती हैं, तो यह अपलोड किए गए डेटा को संग्रहीत करने के लिए अस्थायी फ़ाइलें उत्पन्न करता है। ये फ़ाइलें PHP स्क्रिप्ट में फ़ाइल अपलोड हैंडलिंग के लिए महत्वपूर्ण हैं। यदि स्क्रिप्ट के निष्पादन के बाद स्थायी भंडारण की आवश्यकता है, तो move_uploaded_file फ़ंक्शन का उपयोग करके इन अस्थायी फ़ाइलों को इच्छित स्थान पर स्थानांतरित करना चाहिए। निष्पादन के बाद, PHP स्वचालित रूप से शेष अस्थायी फ़ाइलों को हटा देता है।

{% hint style="info" %} सुरक्षा चेतावनी: हमलावर, अस्थायी फ़ाइलों के स्थान के बारे में जानते हुए, अपलोड के दौरान फ़ाइल तक पहुँचकर कोड निष्पादित करने के लिए स्थानीय फ़ाइल समावेशन (LFI) भेद्यता का लाभ उठा सकते हैं। {% endhint %}

अनधिकृत पहुँच के लिए चुनौती अस्थायी फ़ाइल के नाम की भविष्यवाणी करना है, जिसे जानबूझकर यादृच्छिक बनाया गया है।

विंडोज़ सिस्टम पर शोषण

विंडोज़ पर, PHP अस्थायी फ़ाइल नामों को GetTempFileName फ़ंक्शन का उपयोग करके उत्पन्न करता है, जिससे <path>\<pre><uuuu>.TMP जैसे पैटर्न का निर्माण होता है। विशेष रूप से:

  • डिफ़ॉल्ट पथ आमतौर पर C:\Windows\Temp होता है।
  • उपसर्ग आमतौर पर "php" होता है।
  • <uuuu> एक अद्वितीय हेक्साडेसिमल मान का प्रतिनिधित्व करता है। महत्वपूर्ण रूप से, फ़ंक्शन की सीमा के कारण, केवल निचले 16 बिट्स का उपयोग किया जाता है, जिससे स्थिर पथ और उपसर्ग के साथ अधिकतम 65,535 अद्वितीय नाम संभव होते हैं, जिससे ब्रूट फोर्स करना संभव हो जाता है।

इसके अलावा, विंडोज़ सिस्टम पर शोषण प्रक्रिया को सरल बनाया गया है। FindFirstFile फ़ंक्शन में एक विशेषता स्थानीय फ़ाइल समावेशन (LFI) पथों में वाइल्डकार्ड के उपयोग की अनुमति देती है। यह अस्थायी फ़ाइल को खोजने के लिए निम्नलिखित जैसे एक समावेश पथ बनाने में सक्षम बनाता है:

http://site/vuln.php?inc=c:\windows\temp\php<<

कुछ स्थितियों में, एक अधिक विशिष्ट मास्क (जैसे php1<< या phpA<<) की आवश्यकता हो सकती है। कोई इन मास्कों को व्यवस्थित रूप से आज़मा सकता है ताकि अपलोड की गई अस्थायी फ़ाइल का पता लगाया जा सके।

GNU/Linux सिस्टम पर शोषण

GNU/Linux सिस्टम के लिए, अस्थायी फ़ाइल नामकरण में यादृच्छिकता मजबूत है, जिससे नाम न तो पूर्वानुमानित होते हैं और न ही बलात्कारी हमलों के प्रति संवेदनशील होते हैं। अधिक विवरण संदर्भित दस्तावेज़ में पाया जा सकता है।