IIS - Internet Information Services
Last updated
Last updated
सीखें और AWS हैकिंग का अभ्यास करें:HackTricks Training AWS Red Team Expert (ARTE) सीखें और GCP हैकिंग का अभ्यास करें: HackTricks Training GCP Red Team Expert (GRTE)
परीक्षण निष्पादन योग्य फ़ाइल एक्सटेंशन:
asp
aspx
config
php
किसी भी IIS सर्वर पर जहाँ आपको 302 मिलता है, आप होस्ट हेडर को हटाने और HTTP/1.0 का उपयोग करने की कोशिश कर सकते हैं और प्रतिक्रिया के अंदर स्थान हेडर आपको आंतरिक IP पते की ओर इंगित कर सकता है:
आंतरिक IP का खुलासा करने वाली प्रतिक्रिया:
आप .config फ़ाइलें अपलोड कर सकते हैं और उनका उपयोग कोड निष्पादित करने के लिए कर सकते हैं। इसे करने का एक तरीका फ़ाइल के अंत में HTML टिप्पणी के अंदर कोड जोड़ना है: यहाँ उदाहरण डाउनलोड करें
इस भेद्यता का शोषण करने के लिए अधिक जानकारी और तकनीकें यहाँ हैं।
मैंने जो सूची बनाई है उसे डाउनलोड करें:
यह निम्नलिखित सूचियों की सामग्री को मिलाकर बनाई गई थी:
https://raw.githubusercontent.com/danielmiessler/SecLists/master/Discovery/Web-Content/IIS.fuzz.txt http://itdrafts.blogspot.com/2013/02/aspnetclient-folder-enumeration-and.html https://github.com/digination/dirbuster-ng/blob/master/wordlists/vulns/iis.txt https://raw.githubusercontent.com/danielmiessler/SecLists/master/Discovery/Web-Content/SVNDigger/cat/Language/aspx.txt https://raw.githubusercontent.com/danielmiessler/SecLists/master/Discovery/Web-Content/SVNDigger/cat/Language/asp.txt https://raw.githubusercontent.com/xmendez/wfuzz/master/wordlist/vulns/iis.txt
इसे बिना किसी एक्सटेंशन के उपयोग करें, जिन फ़ाइलों को इसकी आवश्यकता है, उनमें पहले से ही है।
पूर्ण लेखन की जांच करें: https://blog.mindedsecurity.com/2018/10/from-path-traversal-to-source-code-in.html
संक्षेप में, एप्लिकेशन के फ़ोल्डरों के अंदर कई web.config फ़ाइलें हैं जिनमें "assemblyIdentity" फ़ाइलों और "namespaces" के संदर्भ हैं। इस जानकारी के साथ यह जानना संभव है कि निष्पादन योग्य फ़ाइलें कहाँ स्थित हैं और उन्हें डाउनलोड करें। डाउनलोड की गई Dlls से यह भी संभव है कि नए namespaces खोजें जहाँ आपको पहुँचने का प्रयास करना चाहिए और web.config फ़ाइल प्राप्त करनी चाहिए ताकि नए namespaces और assemblyIdentity मिल सकें। इसके अलावा, फ़ाइलें connectionstrings.config और global.asax दिलचस्प जानकारी रख सकती हैं।\
.Net MVC अनुप्रयोगों में, web.config फ़ाइल एक महत्वपूर्ण भूमिका निभाती है, जो प्रत्येक बाइनरी फ़ाइल को निर्दिष्ट करती है जिस पर एप्लिकेशन निर्भर करता है "assemblyIdentity" XML टैग के माध्यम से।
web.config फ़ाइल तक पहुँचने का एक उदाहरण नीचे दिखाया गया है:
यह अनुरोध विभिन्न सेटिंग्स और निर्भरताओं को प्रकट करता है, जैसे:
EntityFramework संस्करण
AppSettings वेबपृष्ठों, क्लाइंट सत्यापन, और JavaScript के लिए
System.web प्रमाणीकरण और रनटाइम के लिए कॉन्फ़िगरेशन
System.webServer मॉड्यूल सेटिंग्स
Runtime असेंबली बाइंडिंग्स कई पुस्तकालयों के लिए जैसे Microsoft.Owin, Newtonsoft.Json, और System.Web.Mvc
ये सेटिंग्स यह संकेत देती हैं कि कुछ फ़ाइलें, जैसे /bin/WebGrease.dll, एप्लिकेशन के /bin फ़ोल्डर के भीतर स्थित हैं।
रूट डायरेक्टरी में पाई जाने वाली फ़ाइलें, जैसे /global.asax और /connectionstrings.config (जो संवेदनशील पासवर्ड रखती है), एप्लिकेशन की कॉन्फ़िगरेशन और संचालन के लिए आवश्यक हैं।
MVC एप्लिकेशन विशिष्ट नामस्थान के लिए अतिरिक्त web.config फ़ाइलें भी परिभाषित करते हैं ताकि प्रत्येक फ़ाइल में दोहरावदार घोषणाओं से बचा जा सके, जैसा कि एक अन्य web.config डाउनलोड करने के अनुरोध के साथ प्रदर्शित किया गया है:
कस्टम नामस्थान का उल्लेख "/bin" निर्देशिका में मौजूद "WebApplication1" नामक DLL की ओर इशारा करता है। इसके बाद, WebApplication1.dll डाउनलोड करने के लिए एक अनुरोध दिखाया गया है:
यह अन्य आवश्यक DLLs की उपस्थिति का सुझाव देता है, जैसे System.Web.Mvc.dll और System.Web.Optimization.dll, /bin निर्देशिका में।
एक परिदृश्य में जहां एक DLL एक नामस्थान आयात करता है जिसे WebApplication1.Areas.Minded कहा जाता है, एक हमलावर अन्य web.config फ़ाइलों के अस्तित्व का अनुमान लगा सकता है जो पूर्वानुमानित पथों में हैं, जैसे /area-name/Views/, जिसमें विशिष्ट कॉन्फ़िगरेशन और /bin फ़ोल्डर में अन्य DLLs के संदर्भ शामिल हैं। उदाहरण के लिए, /Minded/Views/web.config के लिए एक अनुरोध कॉन्फ़िगरेशन और नामस्थान प्रकट कर सकता है जो एक अन्य DLL, WebApplication1.AdditionalFeatures.dll की उपस्थिति को इंगित करता है।
यदि आप निम्नलिखित त्रुटि देखते हैं:
इसका मतलब है कि सर्वर ने Host header के अंदर सही डोमेन नाम नहीं प्राप्त किया। वेब पृष्ठ तक पहुँचने के लिए, आप सर्वर द्वारा प्रदत्त SSL Certificate को देख सकते हैं और शायद आप वहां डोमेन/सबडोमेन नाम पा सकते हैं। यदि यह वहाँ नहीं है, तो आपको सही एक को खोजने के लिए VHosts को ब्रूट फोर्स करने की आवश्यकता हो सकती है।
आप इस तकनीक का उपयोग करके हर खोजे गए फ़ोल्डर के अंदर फोल्डर्स और फ़ाइलों को सूचीबद्ध करने की कोशिश कर सकते हैं (यहां तक कि यदि यह बेसिक ऑथेंटिकेशन की आवश्यकता है)। यदि सर्वर कमजोर है, तो इस तकनीक की मुख्य सीमा यह है कि यह प्रत्येक फ़ाइल/फ़ोल्डर के नाम के पहले 6 अक्षरों और फ़ाइलों के एक्सटेंशन के पहले 3 अक्षरों को ही खोज सकता है।
आप इस कमजोरियों के लिए परीक्षण करने के लिए https://github.com/irsdl/IIS-ShortName-Scanner का उपयोग कर सकते हैं:java -jar iis_shortname_scanner.jar 2 20 http://10.13.38.11/dev/dca66d38fd916317687e1390a420c3fc/db/
मूल शोध: https://soroush.secproject.com/downloadable/microsoft_iis_tilde_character_vulnerability_feature.pdf
आप metasploit का भी उपयोग कर सकते हैं: use scanner/http/iis_shortname_scanner
खोजी गई फ़ाइलों के अंतिम नाम को खोजने के लिए एक अच्छा विचार है कि आप LLMs से विकल्प पूछें जैसे कि इसे स्क्रिप्ट https://github.com/Invicti-Security/brainstorm/blob/main/fuzzer_shortname.py में किया गया है।
बायपास एक बेसिक ऑथेंटिकेशन (IIS 7.5) को एक्सेस करने की कोशिश करते हुए: /admin:$i30:$INDEX_ALLOCATION/admin.php
या /admin::$INDEX_ALLOCATION/admin.php
आप नए फोल्डर्स खोजने और ऑथेंटिकेशन को बायपास करने के लिए इस कमजोरी और पिछले वाले को मिश्रित करने की कोशिश कर सकते हैं।
ASP.NET में एक डिबगिंग मोड शामिल है और इसका फ़ाइल नाम trace.axd
है।
यह एक निश्चित समय अवधि में एक एप्लिकेशन के लिए किए गए सभी अनुरोधों का बहुत विस्तृत लॉग रखता है।
इस जानकारी में दूरस्थ क्लाइंट IP, सत्र आईडी, सभी अनुरोध और प्रतिक्रिया कुकीज़, भौतिक पथ, स्रोत कोड की जानकारी, और संभावित रूप से उपयोगकर्ता नाम और पासवर्ड शामिल हैं।
https://www.rapid7.com/db/vulnerabilities/spider-asp-dot-net-trace-axd/
ASPXAUTH निम्नलिखित जानकारी का उपयोग करता है:
validationKey
(string): हस्ताक्षर सत्यापन के लिए उपयोग करने के लिए हेक्स-कोडित कुंजी।
decryptionMethod
(string): (डिफ़ॉल्ट “AES”)।
decryptionIV
(string): हेक्स-कोडित प्रारंभिक वेक्टर (डिफ़ॉल्ट शून्य वेक्टर)।
decryptionKey
(string): डिक्रिप्शन के लिए उपयोग करने के लिए हेक्स-कोडित कुंजी।
हालांकि, कुछ लोग इन पैरामीटर के डिफ़ॉल्ट मानों का उपयोग करेंगे और कुकी के रूप में उपयोगकर्ता का ईमेल का उपयोग करेंगे। इसलिए, यदि आप एक वेब खोज सकते हैं जो ASPXAUTH कुकी का उपयोग कर रहा है और आप हमले के तहत सर्वर पर उस उपयोगकर्ता के ईमेल के साथ एक उपयोगकर्ता बनाते हैं, तो आप पहले सर्वर में दूसरे सर्वर की कुकी का उपयोग कर सकते हैं और उपयोगकर्ता का अनुकरण कर सकते हैं। यह हमला इस writeup में काम किया।
यहां पूरा रिपोर्ट: कोड में एक बग उपयोगकर्ता द्वारा दिए गए पासवर्ड की सही जांच नहीं करता, इसलिए एक हमलावर जिसका पासवर्ड हैश एक कुंजी पर हिट करता है जो पहले से ही कैश में है, उस उपयोगकर्ता के रूप में लॉगिन करने में सक्षम होगा।
सीखें और AWS हैकिंग का अभ्यास करें:HackTricks Training AWS Red Team Expert (ARTE) सीखें और GCP हैकिंग का अभ्यास करें: HackTricks Training GCP Red Team Expert (GRTE)