
IIS short filename (8.3) disclosure vulnerability के लिए स्कैनर्स का नवीनतम संस्करण
नवीनतम प्रस्तुति:
नवीनतम ब्लॉग पोस्ट:
मैं सभी को सुझाव देता हूँ कि इस पुराने उपकरण का उपयोग करने से पहले @bitquark के Go में नए उपकरण का प्रयास करें: https://github.com/bitquark/shortscan
IIS शॉर्ट फ़ाइल नाम (8.3) प्रकटीकरण भेद्यता के लिए स्कैनर का नवीनतम संस्करण, जो टिल्ड (~) वर्ण का उपयोग करता है। यह समस्या 2010 में खोजी गई थी लेकिन तब से कई बार विकसित हुई है।
यह एक पुराना उपकरण है और कोड स्पेगेटी जैसा है, लेकिन यह नवीनतम IIS (इसे लिखते समय Windows Server 2022 पर IIS 10) से भी निपटने में सक्षम है! इसे हाल ही में अपडेट किया गया है, ताकि यह Java में रिफ्लेक्शन हैक्स के बिना कस्टम HTTP विधियाँ भेजने का समर्थन कर सके। हालाँकि, कुछ शानदार शोधकर्ताओं ने इस उपकरण को Go जैसी अन्य तकनीकों का उपयोग करके पुनः लागू करने का प्रयास किया है, और जब वे परिपक्व हो जाते हैं, तो वे शायद इससे बेहतर काम करेंगे।
माइक्रोसॉफ्ट IIS में एक दोष है जो अनधिकृत सूचना प्रकटीकरण का कारण बन सकता है। यह समस्या उस अनुरोध के पार्सिंग के दौरान ट्रिगर होती है जिसमें टिल्ड वर्ण (~) होता है। इससे एक दूरस्थ हमलावर को फ़ाइल और फ़ोल्डर नाम की जानकारी प्राप्त करने की अनुमति मिल सकती है।
इस स्कैनर को बेहतर समर्थन के लिए https://code.google.com/p/iis-shortname-scanner-poc/ से GitHub पर स्थानांतरित किया गया था।
मूल शोध फ़ाइल: http://soroush.secproject.com/downloadable/microsoft_iis_tilde_character_vulnerability_feature.pdf
माइक्रोसॉफ्ट IIS के कई संस्करणों में कुछ वेक्टरों का उपयोग करके उन फ़ाइलों और निर्देशिकाओं के शॉर्ट नामों का पता लगाना संभव है जिनके Windows में 8.3 समतुल्य है। उदाहरण के लिए, ".aspx" फ़ाइलों के सभी शॉर्ट नामों का पता लगाना संभव है क्योंकि उनके एक्सटेंशन में 4 अक्षर होते हैं।
नोट: इस स्कैनर के नवीनतम संस्करणों में नई तकनीकें शामिल की गई हैं, और अब यह IIS10 को स्कैन कर सकता है जब यह असुरक्षित हो।
शॉर्ट नामों के आधार पर मूल फ़ाइल या फ़ोल्डर नाम खोजना आसान नहीं है। हालाँकि, निम्नलिखित विधियाँ उदाहरण के रूप में अनुशंसित हैं:
हाल के संस्करण को Open JDK 18 का उपयोग करके संकलित किया गया है (अन्य JDK के लिए पुरानी jar फ़ाइलें हटा दी गई हैं लेकिन Git इतिहास में पाई जा सकती हैं)।
आपको इस पुराने एप्लिकेशन का उपयोग करने के लिए /release निर्देशिका में फ़ाइलें डाउनलोड करनी होंगी!
आप इस एप्लिकेशन को स्वयं भी संकलित कर सकते हैं। कृपया आगे की जांच के लिए GitHub में कोई भी समस्या सबमिट करें।
उपयोग 1 (डिफ़ॉल्ट कॉन्फ़िग फ़ाइल के साथ लक्ष्य असुरक्षित है या नहीं, यह सत्यापित करने के लिए):
java -jar iis_shortname_scanner.jar [URL]
उपयोग 2 (डिफ़ॉल्ट कॉन्फ़िग फ़ाइल के साथ 8.3 फ़ाइल नाम खोजने के लिए):
java -jar iis_shortname_scanner.jar [ShowProgress] [ThreadNumbers] [URL]
उपयोग 3 (एक नई कॉन्फ़िग फ़ाइल के साथ लक्ष्य असुरक्षित है या नहीं, यह सत्यापित करने के लिए):
java -jar iis_shortname_scanner.jar [URL] [configFile]
उपयोग 4 (एक नई कॉन्फ़िग फ़ाइल के साथ 8.3 फ़ाइल नाम खोजने के लिए):
java -jar iis_shortname_scanner.jar [ShowProgress] [ThreadNumbers] [URL] [configFile]
उपयोग 5 (लिनक्स बॉक्स का उपयोग करके कई लक्ष्यों को स्कैन करने के लिए):
./multi_targets.sh <scope file> <is_default_https (1=https)>
विवरण:
[ShowProgress]: 0= Show final results only - 1= Show final results step by step - 2= Show Progress
[ThreadNumbers]: 0= No thread - Integer Number = Number of concurrent threads [be careful about IIS Denial of Service]
[URL]: A complete URL - starts with http/https protocol
[configFile]: path to a new config file which is based on config.xml
उदाहरण:
- Example 0 (to see if the target is vulnerable):
java -jar iis_shortname_scanner.jar http://example.com/folder/
- Example 1 (uses no thread - very slow):
java -jar iis_shortname_scanner.jar 2 0 http://example.com/folder/new%20folder/
- Example 2 (uses 20 threads - recommended):
java -jar iis_shortname_scanner.jar 2 20 http://example.com/folder/new%20folder/
- Example 3 (saves output in a text file):
java -jar iis_shortname_scanner.jar 0 20 http://example.com/folder/new%20folder/ > c:\results.txt
- Example 4 (bypasses IIS basic authentication):
java -jar iis_shortname_scanner.jar 2 20 http://example.com/folder/AuthNeeded:$I30:$Index_Allocation/
- Example 5 (using a new config file):
java -jar iis_shortname_scanner.jar 2 20 http://example.com/folder/ newconfig.xml
- Example 6 (scanning multiple targets using a linux box):
./multi_targets.sh scope.txt 1
नोट 1: स्कैनर सेटिंग्स बदलने और अतिरिक्त हेडर जोड़ने के लिए config.xml फ़ाइल को संपादित करें। नोट 2: कभी-कभी यह पहली बार काम नहीं करता, और आपको फिर से प्रयास करने की आवश्यकता होती है।
निम्नलिखित उदाहरणों में, IIS एक अलग संदेश के साथ प्रतिक्रिया देता है जब कोई फ़ाइल मौजूद होती है:
http://target/folder/valid*~1.*/.aspx
http://target/folder/invalid*~1.*/.aspx
हालाँकि, विभिन्न IIS सर्वर अलग-अलग प्रतिक्रिया दे सकते हैं, और उदाहरण के लिए उनमें से कुछ निम्नलिखित या अन्य समान पैटर्न के साथ काम कर सकते हैं:
http://target/folder/valid*~1.*\.asp
http://target/folder/invalid*~1.*\.asp
अनुरोध भेजने की विधि जैसे GET, POST, OPTIONS, DEBUG, ... भी महत्वपूर्ण है।
मेरा मानना है कि प्रॉक्सी का उपयोग करके अनुरोधों की निगरानी करना इस मुद्दे और इस स्कैनर को समझने का सबसे अच्छा तरीका है।
माइक्रोसॉफ्ट इस सुरक्षा समस्या को पैच नहीं करेगा। उनकी अंतिम प्रतिक्रिया इस प्रकार है:
Thank you for contacting the Microsoft Security Response Center.
We appreciate your bringing this to our attention. Our previous guidance stands: deploy IIS with 8.3 names disabled.
इसलिए, Windows ऑपरेटिंग सिस्टम पर निम्नलिखित रजिस्ट्री कुंजी बनाकर 8.3 नाम अक्षम करके IIS तैनात करने की अनुशंसा की जाती है:
Key: HKLM\SYSTEM\CurrentControlSet\Control\FileSystem
Name: NtfsDisable8dot3NameCreation
Value: 1
नोट: वेब फ़ोल्डर को पुनः बनाने की आवश्यकता है, क्योंकि NtfsDisable8dot3NameCreation रजिस्ट्री प्रविष्टि में परिवर्तन केवल उन फ़ाइलों और निर्देशिकाओं को प्रभावित करता है जो परिवर्तन के बाद बनाई गई हैं, इसलिए जो फ़ाइलें पहले से मौजूद हैं वे प्रभावित नहीं होती हैं।
इमेज बनाएं:
docker build . -t shortname
फ़ाइल मोड:
docker run \
-v $(realpath urls.txt):/app/urls.txt \
-v $(realpath output_dir):/app/iis_shortname_results \
shortname -f urls.txt
एकल मोड:
docker run shortname 2 20 http://example.com
कॉन्फ़िग फ़ाइल को ओवरराइट करें:
docker run \
-v $(realpath config.xml):/app/config.xml \
shortname http://example.com
शोध लिंक:
वेबसाइट संदर्भ:
वीडियो लिंक:
अन्य लिंक: