hacktricks/pentesting-web/file-inclusion/lfi2rce-via-temp-file-uploads.md
Translator workflow 75e8745ba3 Translated to Hindi
2023-11-06 08:38:02 +00:00

9.6 KiB

☁️ HackTricks क्लाउड ☁️ -🐦 ट्विटर 🐦 - 🎙️ ट्विच 🎙️ - 🎥 यूट्यूब 🎥

PHP फ़ाइल अपलोड

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

{% hint style="info" %} हमलावद आमतौर पर जानेंगे कि यदि उसने स्थानीय फ़ाइल सम्मिलन पाया है, तो वह अपलोड की जा रही फ़ाइल को लोड करने और RCE प्राप्त करने के लिए उपयोग कर सकता है। {% endhint %}

फ़ाइल तक पहुंचने की मुख्य समस्या मूल रूप से इसके नाम को अनुमान लगाना है (जो "यादृच्छिक" होगा)

Windows शोषण

Windows पर यादृच्छिक नाम उत्पन्न करने के लिए, PHP ने GetTempFileName फ़ंक्शन का उपयोग किया है। दस्तावेज़ीकरण में देखने पर हम निम्नलिखित स्पष्टीकरण पा सकते हैं: GetTempFileName फ़ंक्शन निम्नलिखित प्रारूप का एक अस्थायी फ़ाइल नाम बनाता है:

<पथ>\<प्री><यूयूयूयू>.TMP

  • पथ है upload_tmp_dir जो सामान्यतः C:\Windows\Temp होता है
  • प्री आमतौर पर: "php" होता है
  • <यूयूयूयू> एक अद्वितीय हेक्स मान है। हालांकि:
  • uUnique पैरामीटर के केवल निचले 16 बिट का उपयोग किया जाता है। यदि lpPathName और lpPrefixString पैरामीटर एक जैसे ही रहें, तो यह GetTempFileName को अधिकतम 65,535 अद्वितीय फ़ाइल नामों तक सीमित करता है। इसे ब्रूट-फ़ोर्स किया जा सकता है।

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

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

GNU/Linux शोषण

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

संदर्भ

☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥